Thu, 29 Jan 2026 18:56:36 +0100
add visibility_states arg to labels, buttons, text widgets (GTK)
| ui/common/context.c | file | annotate | diff | comparison | revisions | |
| ui/common/context.h | file | annotate | diff | comparison | revisions | |
| ui/gtk/button.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/container.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/display.c | file | annotate | diff | comparison | revisions | |
| ui/gtk/text.c | file | annotate | diff | comparison | revisions | |
| ui/ui/button.h | file | annotate | diff | comparison | revisions | |
| ui/ui/display.h | file | annotate | diff | comparison | revisions | |
| ui/ui/text.h | file | annotate | diff | comparison | revisions |
--- a/ui/common/context.c Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/common/context.c Thu Jan 29 18:56:36 2026 +0100 @@ -621,6 +621,13 @@ ui_widget_set_states2(ctx, widget, (ui_enablefunc)ui_set_visible, states, nstates); } +void uic_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, const int *states) { + if(states) { + size_t nstates = uic_state_array_size(states); + ui_widget_set_visibility_states(ctx, widget, states, (int)nstates); + } +} + size_t uic_state_array_size(const int *states) { int i; for(i=0;states[i] >= 0;i++) { }
--- a/ui/common/context.h Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/common/context.h Thu Jan 29 18:56:36 2026 +0100 @@ -150,6 +150,7 @@ void uic_reg_var(UiContext *ctx, const char *name, UiVarType type, void *value); +void uic_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, const int *states); size_t uic_state_array_size(const int *states); void uic_check_state_widgets(UiContext *ctx); void uic_add_state_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *states);
--- a/ui/gtk/button.c Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/gtk/button.c Thu Jan 29 18:56:36 2026 +0100 @@ -110,6 +110,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, button, &layout); + uic_widget_set_visibility_states(obj->ctx, button, args->visibility_states); return button; } @@ -317,6 +318,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, widget, &layout); + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); return widget; } @@ -380,6 +382,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, widget, &layout); + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); return widget; } @@ -469,6 +472,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, widget, &layout); + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); return widget; } @@ -621,6 +625,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, rbutton, &layout); + uic_widget_set_visibility_states(obj->ctx, rbutton, args->visibility_states); return rbutton; } @@ -913,6 +918,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, button, &layout); + uic_widget_set_visibility_states(obj->ctx, button, args->visibility_states); return button; }
--- a/ui/gtk/container.c Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/gtk/container.c Thu Jan 29 18:56:36 2026 +0100 @@ -393,10 +393,7 @@ UiContainerX *container = ui_box_container(obj, box, type); uic_object_push_container(obj, container); - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, box, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, box, args->visibility_states); return box; } @@ -434,10 +431,7 @@ UiContainerX *container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill); uic_object_push_container(obj, container); - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, grid, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, grid, args->visibility_states); return grid; } @@ -486,10 +480,7 @@ uic_object_push_container(obj, container); } - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, frame, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, frame, args->visibility_states); return frame; } @@ -515,10 +506,7 @@ uic_object_push_container(obj, container); } - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, expander, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, expander, args->visibility_states); return expander; } @@ -545,10 +533,7 @@ uic_object_push_container(obj, container); } - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, sw, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, sw, args->visibility_states); return sw; } @@ -839,10 +824,7 @@ UiContainerX *container = ui_tabview_container(obj, widget); uic_object_push_container(obj, container); - if(args->visibility_states) { - size_t nstates = uic_state_array_size(args->visibility_states); - ui_widget_set_visibility_states(obj->ctx, widget, args->visibility_states, (int)nstates); - } + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); return widget; }
--- a/ui/gtk/display.c Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/gtk/display.c Thu Jan 29 18:56:36 2026 +0100 @@ -115,6 +115,8 @@ UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, widget, &layout); + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); + return widget; } @@ -205,6 +207,8 @@ UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, progressbar, &layout); + uic_widget_set_visibility_states(obj->ctx, progressbar, args->visibility_states); + return progressbar; } @@ -246,6 +250,8 @@ UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, spinner, &layout); + uic_widget_set_visibility_states(obj->ctx, spinner, args->visibility_states); + return spinner; }
--- a/ui/gtk/text.c Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/gtk/text.c Thu Jan 29 18:56:36 2026 +0100 @@ -160,6 +160,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, scroll_area, &layout); + uic_widget_set_visibility_states(obj->ctx, scroll_area, args->visibility_states); // bind value if(var) { @@ -639,6 +640,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, textfield, &layout); + uic_widget_set_visibility_states(obj->ctx, textfield, args->visibility_states); if(var) { UiString *value = var->value; @@ -999,6 +1001,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, pathtf->stack, &layout); + uic_widget_set_visibility_states(obj->ctx, pathtf->stack, args->visibility_states); pathtf->entry_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); pathtf->entry = gtk_entry_new(); @@ -1174,6 +1177,7 @@ UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; UiLayout layout = UI_ARGS2LAYOUT(args); ct->add(ct, eventbox, &layout); + uic_widget_set_visibility_states(obj->ctx, eventbox, args->visibility_states); // hbox as parent for the GtkEntry and GtkButtonBox GtkWidget *hbox = ui_gtk_hbox_new(0);
--- a/ui/ui/button.h Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/ui/button.h Thu Jan 29 18:56:36 2026 +0100 @@ -66,6 +66,7 @@ void *onclickdata; const int *states; + const int *visibility_states; } UiButtonArgs; typedef struct UiToggleArgs { @@ -96,6 +97,7 @@ int enable_state; const int *states; + const int *visibility_states; } UiToggleArgs; typedef struct UiLinkButtonArgs { @@ -125,6 +127,7 @@ UiLinkType type; const int *states; + const int *visibility_states; } UiLinkButtonArgs; #define ui_button(obj, ...) ui_button_create(obj, &(UiButtonArgs){ __VA_ARGS__ } )
--- a/ui/ui/display.h Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/ui/display.h Thu Jan 29 18:56:36 2026 +0100 @@ -71,6 +71,8 @@ UiLabelStyle style; UiString* value; const char* varname; + + const int *visibility_states; } UiLabelArgs; typedef struct UiProgressbarArgs { @@ -95,6 +97,8 @@ double max; UiDouble* value; const char* varname; + + const int *visibility_states; } UiProgressbarArgs; typedef struct UiProgressbarSpinnerArgs { @@ -116,6 +120,8 @@ UiInteger* value; const char* varname; + + const int *visibility_states; } UiProgressbarSpinnerArgs; /* label widgets */
--- a/ui/ui/text.h Tue Jan 27 20:15:48 2026 +0100 +++ b/ui/ui/text.h Thu Jan 29 18:56:36 2026 +0100 @@ -60,6 +60,7 @@ void *onchangedata; const int *states; + const int *visibility_states; } UiTextAreaArgs; typedef struct UiTextFieldArgs { @@ -88,6 +89,7 @@ void *onactivatedata; const int *states; + const int *visibility_states; } UiTextFieldArgs; typedef struct UiPathElmRet { @@ -134,6 +136,8 @@ void *ondragcompletedata; ui_callback ondrop; void *ondropsdata; + + const int *visibility_states; } UiPathTextFieldArgs; #define ui_textarea(obj, ...) ui_textarea_create(obj, &(UiTextAreaArgs) { __VA_ARGS__ })