Fri, 24 Apr 2026 18:17:20 +0200
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,