# HG changeset patch # User Olaf Wintermann # Date 1777047440 -7200 # Node ID 3910be3b2ac698bd4116f626d3165784411da28e # Parent 11bc246ff15845fb4809a6df20566b341fd382ad implement actions for toolbar buttons (GTK) diff -r 11bc246ff158 -r 3910be3b2ac6 ui/gtk/toolbar.c --- 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) { diff -r 11bc246ff158 -r 3910be3b2ac6 ui/gtk/toolbar.h --- 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, diff -r 11bc246ff158 -r 3910be3b2ac6 ui/gtk/toolkit.h --- 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;