implement actions for toolbar buttons (GTK) default tip

Fri, 24 Apr 2026 18:17:20 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 24 Apr 2026 18:17:20 +0200
changeset 1111
3910be3b2ac6
parent 1110
11bc246ff158

implement actions for toolbar buttons (GTK)

ui/gtk/toolbar.c file | annotate | diff | comparison | revisions
ui/gtk/toolbar.h file | annotate | diff | comparison | revisions
ui/gtk/toolkit.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/toolbar.c	Fri Apr 24 14:47:37 2026 +0200
+++ b/ui/gtk/toolbar.c	Fri Apr 24 18:17:20 2026 +0200
@@ -140,13 +140,14 @@
     
     ui_set_widget_nstates(obj->ctx, GTK_WIDGET(button), item->args.states, item->nstates);
     
-    if(item->args.onclick) {
+    if(item->args.onclick || item->args.action) {
         UiEventData *event = cxMalloc(
                 obj->ctx->allocator,
                 sizeof(UiEventData));
         event->obj = obj;
         event->callback = item->args.onclick;
         event->userdata = item->args.onclickdata;
+        event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;
         event->customdata = NULL;
         event->customint = 0;
         event->value = 0;
@@ -202,6 +203,7 @@
     event->obj = obj;
     event->callback = item->args.onchange;
     event->userdata = item->args.onchangedata;
+    event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;;
     event->var = var;
 
     g_signal_connect(
@@ -239,6 +241,10 @@
     if(i) {
         ui_notify_evt(i->observers, &e);
     }
+    
+    if(event->action) {
+        uic_action_callback(&e, event->action);
+    }
 }
 
 int64_t ui_tool_toggle_button_get(UiInteger *integer) {
--- a/ui/gtk/toolbar.h	Fri Apr 24 14:47:37 2026 +0200
+++ b/ui/gtk/toolbar.h	Fri Apr 24 18:17:20 2026 +0200
@@ -42,68 +42,6 @@
 
 #if UI_GTK2 || UI_GTK3
     
-typedef struct UiToolItemI      UiToolItemI;
-typedef struct UiToolItem       UiToolItem;
-typedef struct UiStToolItem     UiStToolItem;
-typedef struct UiToggleToolItem UiToggleToolItem;
-
-typedef struct UiToolbarComboBox   UiToolbarComboBox;
-typedef struct UiToolbarComboBoxNV UiToolbarComboBoxNV;
-
-typedef void(*ui_toolbar_add_f)(GtkToolbar*, UiToolItemI*, UiObject*);
-
-struct UiToolItemI {
-    ui_toolbar_add_f  add_to;
-};
-
-struct UiToolItem {
-    UiToolItemI    item;
-    const char     *label;
-    const char     *image;
-    ui_callback    callback;
-    void           *userdata;
-    const char     *varname;
-    CxList         *groups;
-    int            isimportant;
-};
-
-struct UiStToolItem {
-    UiToolItemI    item;
-    const char     *stockid;
-    ui_callback    callback;
-    void           *userdata;
-    const char     *varname;
-    CxList         *groups;
-    int            isimportant;
-};
-
-struct UiToggleToolItem {
-    UiToolItemI    item;
-    const char     *label;
-    const char     *image;
-    const char     *stockid;
-    UiInteger      *value;
-    const char     *var;
-    CxList         *groups;
-    int            isimportant;
-};
-
-struct UiToolbarComboBox {
-    UiToolItemI         item;
-    UiVar               *var;
-    ui_getvaluefunc getvalue;
-    ui_callback         callback;
-    void                *userdata;
-};
-
-struct UiToolbarComboBoxNV {
-    UiToolItemI         item;
-    char                *listname;
-    ui_getvaluefunc     getvalue;
-    ui_callback         callback;
-    void                *userdata;
-};
-
 
 void ui_toolitem_vstgr(
         char *name,
--- a/ui/gtk/toolkit.h	Fri Apr 24 14:47:37 2026 +0200
+++ b/ui/gtk/toolkit.h	Fri Apr 24 18:17:20 2026 +0200
@@ -173,6 +173,7 @@
     UiVar       *var;
     UiObserver  **observers;
     ui_callback callback;
+    char        *action;
     void        *userdata;
     int         customint1;
     int         customint2;

mercurial