Wed, 17 Dec 2025 18:31:20 +0100
implement enable_state for the switch widget (GTK)
| ui/gtk/button.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/entry.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/toolbar.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/toolkit.h | file | annotate | diff | comparison | revisions |
--- a/ui/gtk/button.c Tue Dec 16 18:09:15 2025 +0100 +++ b/ui/gtk/button.c Wed Dec 17 18:31:20 2025 +0100 @@ -241,6 +241,8 @@ event->observers = NULL; event->callback = NULL; event->userdata = NULL; + event->customint1 = 0; + event->customint2 = 0; g_signal_connect( widget, @@ -397,7 +399,7 @@ UiVarEventData *event) { GtkSwitch *sw = GTK_SWITCH (gobject); - gboolean active = gtk_switch_get_active (sw); + gboolean active = gtk_switch_get_active(sw); UiEvent e; e.obj = event->obj; @@ -405,6 +407,7 @@ e.window = e.obj->window; e.eventdata = NULL; e.eventdatatype = 0; + e.intval = active; e.set = ui_get_setop(); if(event->callback) { @@ -414,6 +417,13 @@ UiInteger *i = event->var->value; ui_notify_evt(i->observers, &e); } + if(event->customint1 > 0) { + if(active) { + ui_set_state(e.obj->ctx, event->customint1); + } else { + ui_unset_state(e.obj->ctx, event->customint1); + } + } } UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { @@ -436,11 +446,13 @@ } UiVarEventData *event = malloc(sizeof(UiVarEventData)); + memset(event, 0, sizeof(UiVarEventData)); event->obj = obj; event->callback = args->onchange; event->userdata = args->onchangedata; event->var = var; event->observers = NULL; + event->customint1 = args->enable_state; g_signal_connect( widget, @@ -453,7 +465,7 @@ "destroy", G_CALLBACK(ui_destroy_vardata), event); - + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, widget, &layout); @@ -565,6 +577,8 @@ event->observers = NULL; event->callback = NULL; event->userdata = NULL; + event->customint1 = 0; + event->customint2 = 0; UiRadioButtonData *rbdata = malloc(sizeof(UiRadioButtonData)); rbdata->value = rgroup;
--- a/ui/gtk/entry.c Tue Dec 16 18:09:15 2025 +0100 +++ b/ui/gtk/entry.c Wed Dec 17 18:31:20 2025 +0100 @@ -125,6 +125,7 @@ } UiVarEventData *event = malloc(sizeof(UiVarEventData)); + memset(event, 0, sizeof(UiVarEventData)); event->obj = obj; event->var = var; event->observers = obs;