rename groups to states

Sun, 07 Dec 2025 15:23:03 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 07 Dec 2025 15:23:03 +0100
changeset 966
e411ed7c5f10
parent 965
5d4419042d9b
child 967
ff4a8d10307b

rename groups to states

application/main.c file | annotate | diff | comparison | revisions
client/args.c file | annotate | diff | comparison | revisions
ui/common/args.c file | annotate | diff | comparison | revisions
ui/common/args.h file | annotate | diff | comparison | revisions
ui/common/context.c file | annotate | diff | comparison | revisions
ui/common/context.h file | annotate | diff | comparison | revisions
ui/common/menu.c file | annotate | diff | comparison | revisions
ui/common/menu.h file | annotate | diff | comparison | revisions
ui/common/toolbar.c file | annotate | diff | comparison | revisions
ui/gtk/button.c file | annotate | diff | comparison | revisions
ui/gtk/entry.c file | annotate | diff | comparison | revisions
ui/gtk/headerbar.c file | annotate | diff | comparison | revisions
ui/gtk/list.c file | annotate | diff | comparison | revisions
ui/gtk/menu.c file | annotate | diff | comparison | revisions
ui/gtk/text.c file | annotate | diff | comparison | revisions
ui/gtk/toolkit.c file | annotate | diff | comparison | revisions
ui/gtk/webview.c file | annotate | diff | comparison | revisions
ui/motif/button.c file | annotate | diff | comparison | revisions
ui/motif/entry.c file | annotate | diff | comparison | revisions
ui/motif/menu.c file | annotate | diff | comparison | revisions
ui/motif/text.c file | annotate | diff | comparison | revisions
ui/motif/toolkit.c file | annotate | diff | comparison | revisions
ui/qt/menu.cpp file | annotate | diff | comparison | revisions
ui/ui/button.h file | annotate | diff | comparison | revisions
ui/ui/entry.h file | annotate | diff | comparison | revisions
ui/ui/menu.h file | annotate | diff | comparison | revisions
ui/ui/text.h file | annotate | diff | comparison | revisions
ui/ui/toolbar.h file | annotate | diff | comparison | revisions
ui/ui/toolkit.h file | annotate | diff | comparison | revisions
ui/ui/tree.h file | annotate | diff | comparison | revisions
ui/ui/webview.h file | annotate | diff | comparison | revisions
ui/ui/window.h file | annotate | diff | comparison | revisions
--- a/application/main.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/application/main.c	Sun Dec 07 15:23:03 2025 +0100
@@ -659,7 +659,7 @@
                 ui_button(obj, .label = "Disable Group 2", .onclick = action_group2, .onclickdata = "disable");
                 ui_newline(obj);
                 
-                ui_button(obj, .label = "Groups 1,2", .colspan = 2, .groups = UI_GROUPS(1, 2));
+                ui_button(obj, .label = "Groups 1,2", .colspan = 2, .states = UI_GROUPS(1, 2));
                 ui_newline(obj);
 
                 ui_label(obj, .label = "Label Col 1", .align = UI_ALIGN_LEFT);
--- a/client/args.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/client/args.c	Sun Dec 07 15:23:03 2025 +0100
@@ -137,7 +137,7 @@
     }
 }
 
-void init_groups(const CxJsonValue *value, void *args, argfunc_set_intarray setarray) {
+void init_states(const CxJsonValue *value, void *args, argfunc_set_intarray setarray) {
     CxJsonValue *val = cxJsonObjGet(value, "states");
     if(!val || val->type != CX_JSON_ARRAY) {
         return;
@@ -208,7 +208,7 @@
     }
     
     init_common_args(value, args, &button_args);
-    init_groups(value, args, (argfunc_set_intarray)ui_button_args_set_groups);
+    init_states(value, args, (argfunc_set_intarray)ui_button_args_set_groups);
     
     CxJsonValue *val = cxJsonObjGet(value, "label");
     if(val && val->type == CX_JSON_STRING) {
@@ -240,7 +240,7 @@
     }
     
     init_common_args(value, args, &button_args);
-    init_groups(value, args, (argfunc_set_intarray)ui_button_args_set_groups);
+    init_states(value, args, (argfunc_set_intarray)ui_button_args_set_groups);
     
     CxJsonValue *val = cxJsonObjGet(value, "label");
     if(val && val->type == CX_JSON_STRING) {
@@ -264,7 +264,7 @@
     
     val = cxJsonObjGet(value, "enable_group");
     if(val && val->type == CX_JSON_INTEGER) {
-        ui_toggle_args_set_enablegroup(args, (int)val->value.integer);
+        ui_toggle_args_set_enablestate(args, (int)val->value.integer);
     }
     
     return args;
--- a/ui/common/args.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/args.c	Sun Dec 07 15:23:03 2025 +0100
@@ -175,10 +175,10 @@
     free((void*)args->lbutton2);
     free((void*)args->rbutton3);
     free((void*)args->rbutton4);
-    free((void*)args->lbutton1_groups);
-    free((void*)args->lbutton2_groups);
-    free((void*)args->rbutton3_groups);
-    free((void*)args->rbutton4_groups);
+    free((void*)args->lbutton1_states);
+    free((void*)args->lbutton2_states);
+    free((void*)args->rbutton3_states);
+    free((void*)args->rbutton4_states);
     free(args);
 }
 
@@ -310,16 +310,16 @@
     args->onclickdata = onclickdata;
 }
 
-void ui_toolbar_item_args_set_groups(UiToolbarItemArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_toolbar_item_args_set_states(UiToolbarItemArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 void ui_toolbar_item_args_free(UiToolbarItemArgs *args) {
     free((void*)args->label);
     free((void*)args->icon);
     free((void*)args->tooltip);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -355,10 +355,10 @@
     args->onchangedata = onchangedata;
 }
 
-void ui_toolbar_toggleitem_args_set_groups(UiToolbarToggleItemArgs *args,int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_toolbar_toggleitem_args_set_states(UiToolbarToggleItemArgs *args,int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_toolbar_toggleitem_args_free(UiToolbarToggleItemArgs *args) {
@@ -366,7 +366,7 @@
     free((void*)args->icon);
     free((void*)args->tooltip);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -1383,10 +1383,10 @@
     args->onclickdata = onclickdata;
 }
 
-void ui_button_args_set_groups(UiButtonArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_button_args_set_states(UiButtonArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_button_args_free(UiButtonArgs *args) {
@@ -1395,7 +1395,7 @@
     free((void*)args->label);
     free((void*)args->icon);
     free((void*)args->tooltip);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -1502,14 +1502,14 @@
     args->value = value;
 }
 
-void ui_toggle_args_set_enablegroup(UiToggleArgs *args, int group) {
-    args->enable_group = group;
-}
-
-void ui_toggle_args_set_groups(UiToggleArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_toggle_args_set_enablestate(UiToggleArgs *args, int state) {
+    args->enable_state = state;
+}
+
+void ui_toggle_args_set_states(UiToggleArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_toggle_args_free(UiToggleArgs *args) {
@@ -1519,7 +1519,7 @@
     free((void*)args->icon);
     free((void*)args->tooltip);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -1633,10 +1633,10 @@
     args->value = value;
 }
 
-void ui_linkbutton_args_set_groups(UiLinkButtonArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_linkbutton_args_set_states(UiLinkButtonArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_linkbutton_args_free(UiLinkButtonArgs *args) {
@@ -1645,7 +1645,7 @@
     free((void*)args->label);
     free((void*)args->uri);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -1815,10 +1815,10 @@
     args->contextmenu = menubuilder;
 }
 
-void ui_list_args_set_groups(UiListArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_list_args_set_states(UiListArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_list_args_free(UiListArgs *args) {
@@ -1831,7 +1831,7 @@
         }
         free(args->static_elements);
     }
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -1971,7 +1971,7 @@
     free((void*)args->style_class);
     free((void*)args->varname);
     free((void*)args->sublists);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -2071,17 +2071,17 @@
     args->value = value;
 }
 
-void ui_textarea_args_set_groups(UiTextAreaArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_textarea_args_set_states(UiTextAreaArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_textarea_args_free(UiTextAreaArgs *args) {
     free((void*)args->name);
     free((void*)args->style_class);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -2191,17 +2191,17 @@
     args->value = value;
 }
 
-void ui_textfield_args_set_groups(UiTextFieldArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_textfield_args_set_states(UiTextFieldArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_textfield_args_free(UiTextFieldArgs *args) {
     free((void*)args->name);
     free((void*)args->style_class);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -2314,17 +2314,17 @@
     args->rangevalue = value;
 }
 
-void ui_spinbox_args_set_groups(UiSpinBoxArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_spinbox_args_set_states(UiSpinBoxArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_spinbox_args_free(UiSpinBoxArgs *args) {
     free((void*)args->name);
     free((void*)args->style_class);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
@@ -2414,17 +2414,17 @@
     args->value = value;
 }
 
-void ui_webview_args_set_groups(UiWebviewArgs *args, int *states, int numstates) {
-    args->groups = calloc(numstates+1, sizeof(int));
-    memcpy((void*)args->groups, states, numstates * sizeof(int));
-    ((int*)args->groups)[numstates] = -1;
+void ui_webview_args_set_states(UiWebviewArgs *args, int *states, int numstates) {
+    args->states = calloc(numstates+1, sizeof(int));
+    memcpy((void*)args->states, states, numstates * sizeof(int));
+    ((int*)args->states)[numstates] = -1;
 }
 
 void ui_webview_args_free(UiWebviewArgs *args) {
     free((void*)args->name);
     free((void*)args->style_class);
     free((void*)args->varname);
-    free((void*)args->groups);
+    free((void*)args->states);
     free(args);
 }
 
--- a/ui/common/args.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/args.h	Sun Dec 07 15:23:03 2025 +0100
@@ -107,7 +107,7 @@
 UIEXPORT void ui_toolbar_item_args_set_tooltip(UiToolbarItemArgs *args, const char *tooltip);
 UIEXPORT void ui_toolbar_item_args_set_onclick(UiToolbarItemArgs *args, ui_callback callback);
 UIEXPORT void ui_toolbar_item_args_set_onclickdata(UiToolbarItemArgs *args, void *onclickdata);
-UIEXPORT void ui_toolbar_item_args_set_groups(UiToolbarItemArgs *args, int *states, int numstates);
+UIEXPORT void ui_toolbar_item_args_set_states(UiToolbarItemArgs *args, int *states, int numstates);
 UIEXPORT void ui_toolbar_item_args_free(UiToolbarItemArgs *args);
 
 UIEXPORT UiToolbarToggleItemArgs* ui_toolbar_toggleitem_args_new(void);
@@ -117,7 +117,7 @@
 UIEXPORT void ui_toolbar_toggleitem_args_set_varname(UiToolbarToggleItemArgs *args, const char *varname);
 UIEXPORT void ui_toolbar_toggleitem_args_set_onchange(UiToolbarToggleItemArgs *args, ui_callback callback);
 UIEXPORT void ui_toolbar_toggleitem_args_set_onchangedata(UiToolbarToggleItemArgs *args, void *onchangedata);
-UIEXPORT void ui_toolbar_toggleitem_args_set_groups(UiToolbarToggleItemArgs *args, int *states, int numstates);
+UIEXPORT void ui_toolbar_toggleitem_args_set_states(UiToolbarToggleItemArgs *args, int *states, int numstates);
 UIEXPORT void ui_toolbar_toggleitem_args_free(UiToolbarToggleItemArgs *args);
 
 UIEXPORT UiToolbarMenuArgs* ui_toolbar_menu_args_new(void);
@@ -346,7 +346,7 @@
 UIEXPORT void ui_button_args_set_labeltype(UiButtonArgs *args, int labeltype);
 UIEXPORT void ui_button_args_set_onclick(UiButtonArgs *args, ui_callback callback);
 UIEXPORT void ui_button_args_set_onclickdata(UiButtonArgs *args, void *onclickdata);
-UIEXPORT void ui_button_args_set_groups(UiButtonArgs *args, int *states, int numstates);
+UIEXPORT void ui_button_args_set_states(UiButtonArgs *args, int *states, int numstates);
 UIEXPORT void ui_button_args_free(UiButtonArgs *args);
 
 UIEXPORT UiToggleArgs* ui_toggle_args_new(void);
@@ -373,8 +373,8 @@
 UIEXPORT void ui_toggle_args_set_onchangedata(UiToggleArgs *args, void *onchangedata);
 UIEXPORT void ui_toggle_args_set_varname(UiToggleArgs *args, const char *varname);
 UIEXPORT void ui_toggle_args_set_value(UiToggleArgs *args, UiInteger *value);
-UIEXPORT void ui_toggle_args_set_enablegroup(UiToggleArgs *args, int group);
-UIEXPORT void ui_toggle_args_set_groups(UiToggleArgs *args, int *states, int numstates);
+UIEXPORT void ui_toggle_args_set_enablestate(UiToggleArgs *args, int state);
+UIEXPORT void ui_toggle_args_set_states(UiToggleArgs *args, int *states, int numstates);
 UIEXPORT void ui_toggle_args_free(UiToggleArgs *args);
 
 UIEXPORT UiLinkButtonArgs* ui_linkbutton_args_new(void);
@@ -401,7 +401,7 @@
 UIEXPORT void ui_linkbutton_args_set_onclickdata(UiLinkButtonArgs *args, void *userdata);
 UIEXPORT void ui_linkbutton_args_set_nofollow(UiLinkButtonArgs *args, UiBool value);
 UIEXPORT void ui_linkbutton_args_set_type(UiLinkButtonArgs *args, UiLinkType type);
-UIEXPORT void ui_linkbutton_args_set_groups(UiLinkButtonArgs *args, int *states, int numstates);
+UIEXPORT void ui_linkbutton_args_set_states(UiLinkButtonArgs *args, int *states, int numstates);
 UIEXPORT void ui_linkbutton_args_free(UiLinkButtonArgs *args);
 
 UIEXPORT UiListArgs* ui_list_args_new(void);
@@ -443,7 +443,7 @@
 UIEXPORT void ui_list_args_set_onsavedata(UiListArgs *args, void *userdata);
 UIEXPORT void ui_list_args_set_multiselection(UiListArgs *args, UiBool multiselection);
 UIEXPORT void ui_list_args_set_contextmenu(UiListArgs *args, UiMenuBuilder *menubuilder);
-UIEXPORT void ui_list_args_set_groups(UiListArgs *args, int *states, int numstates);
+UIEXPORT void ui_list_args_set_states(UiListArgs *args, int *states, int numstates);
 UIEXPORT void ui_list_args_free(UiListArgs *args);
 
 UIEXPORT UiSourceListArgs* ui_sourcelist_args_new(void);
@@ -495,7 +495,7 @@
 UIEXPORT void ui_textarea_args_set_onchangedata(UiTextAreaArgs *args, void *onchangedata);
 UIEXPORT void ui_textarea_args_set_varname(UiTextAreaArgs *args, const char *varname);
 UIEXPORT void ui_textarea_args_set_value(UiTextAreaArgs *args, UiText *value);
-UIEXPORT void ui_textarea_args_set_groups(UiTextAreaArgs *args, int *states, int numstates);
+UIEXPORT void ui_textarea_args_set_states(UiTextAreaArgs *args, int *states, int numstates);
 UIEXPORT void ui_textarea_args_free(UiTextAreaArgs *args);
 
 UIEXPORT UiTextFieldArgs* ui_textfield_args_new(void);
@@ -520,7 +520,7 @@
 UIEXPORT void ui_textfield_args_set_onactivatedata(UiTextFieldArgs *args, void *onactivatedata);
 UIEXPORT void ui_textfield_args_set_varname(UiTextFieldArgs *args, const char *varname);
 UIEXPORT void ui_textfield_args_set_value(UiTextFieldArgs *args, UiString *value);
-UIEXPORT void ui_textfield_args_set_groups(UiTextFieldArgs *args, int *states, int numstates);
+UIEXPORT void ui_textfield_args_set_states(UiTextFieldArgs *args, int *states, int numstates);
 UIEXPORT void ui_textfield_args_free(UiTextFieldArgs *args);
 
 UIEXPORT UiSpinBoxArgs* ui_spinbox_args_new(void);
@@ -549,7 +549,7 @@
 UIEXPORT void ui_spinbox_args_set_intvalue(UiSpinBoxArgs *args, UiInteger *value);
 UIEXPORT void ui_spinbox_args_set_doublevalue(UiSpinBoxArgs *args, UiDouble *value);
 UIEXPORT void ui_spinbox_args_set_rangevalue(UiSpinBoxArgs *args, UiRange *value);
-UIEXPORT void ui_spinbox_args_set_groups(UiSpinBoxArgs *args, int *states, int numstates);
+UIEXPORT void ui_spinbox_args_set_states(UiSpinBoxArgs *args, int *states, int numstates);
 UIEXPORT void ui_spinbox_args_free(UiSpinBoxArgs *args);
 
 UIEXPORT UiWebviewArgs* ui_webview_args_new(void);
@@ -570,7 +570,7 @@
 UIEXPORT void ui_webview_args_set_style_class(UiWebviewArgs *args, const char *classname);
 UIEXPORT void ui_webview_args_set_varname(UiWebviewArgs *args, const char *varname);
 UIEXPORT void ui_webview_args_set_value(UiWebviewArgs *args, UiGeneric *value);
-UIEXPORT void ui_webview_args_set_groups(UiWebviewArgs *args, int *states, int numstates);
+UIEXPORT void ui_webview_args_set_states(UiWebviewArgs *args, int *states, int numstates);
 UIEXPORT void ui_webview_args_free(UiWebviewArgs *args);
 
 #ifdef __cplusplus
--- a/ui/common/context.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/context.c	Sun Dec 07 15:23:03 2025 +0100
@@ -64,8 +64,8 @@
     ctx->vars = cxHashMapCreate(mp->allocator, CX_STORE_POINTERS, 16);
     
     ctx->documents = cxLinkedListCreate(mp->allocator, cx_cmp_ptr, CX_STORE_POINTERS);
-    ctx->group_widgets = cxLinkedListCreate(mp->allocator, cx_cmp_ptr, sizeof(UiGroupWidget));
-    ctx->groups = cxArrayListCreate(mp->allocator, cx_cmp_int, sizeof(int), 32);
+    ctx->state_widgets = cxLinkedListCreate(mp->allocator, cx_cmp_ptr, sizeof(UiStateWidget));
+    ctx->states = cxArrayListCreate(mp->allocator, cx_cmp_int, sizeof(int), 32);
     
     ctx->attach_document = uic_context_attach_document;
     ctx->detach_document2 = uic_context_detach_document;
@@ -92,8 +92,8 @@
 }
 
 void uic_context_prepare_close(UiContext *ctx) {
-    cxListClear(ctx->groups);
-    cxListClear(ctx->group_widgets);
+    cxListClear(ctx->states);
+    cxListClear(ctx->state_widgets);
 }
 
 void uic_context_attach_document(UiContext *ctx, void *document) {
@@ -526,47 +526,47 @@
 
 
 void ui_set_group(UiContext *ctx, int group) {
-    if(!cxListIndexValid(ctx->groups, cxListFind(ctx->groups, &group))) {
-        cxListAdd(ctx->groups, &group);
+    if(!cxListIndexValid(ctx->states, cxListFind(ctx->states, &group))) {
+        cxListAdd(ctx->states, &group);
     }
     
     // enable/disable group widgets
-    uic_check_group_widgets(ctx);
+    uic_check_state_widgets(ctx);
 }
 
 void ui_unset_group(UiContext *ctx, int group) {
-    int i = cxListFind(ctx->groups, &group);
+    int i = cxListFind(ctx->states, &group);
     if(i != -1) {
-        cxListRemove(ctx->groups, i);
+        cxListRemove(ctx->states, i);
     }
     
     // enable/disable group widgets
-    uic_check_group_widgets(ctx);
+    uic_check_state_widgets(ctx);
 }
 
 int* ui_active_groups(UiContext *ctx, int *ngroups) {
-    *ngroups = cxListSize(ctx->groups);
-    return cxListAt(ctx->groups, 0);
+    *ngroups = cxListSize(ctx->states);
+    return cxListAt(ctx->states, 0);
 }
 
-void uic_check_group_widgets(UiContext *ctx) {
+void uic_check_state_widgets(UiContext *ctx) {
     int ngroups = 0;
     int *groups = ui_active_groups(ctx, &ngroups);
     
-    CxIterator i = cxListIterator(ctx->group_widgets);
-    cx_foreach(UiGroupWidget *, gw, i) {
-        char *check = calloc(1, gw->numgroups);
+    CxIterator i = cxListIterator(ctx->state_widgets);
+    cx_foreach(UiStateWidget *, gw, i) {
+        char *check = calloc(1, gw->numstates);
         
         for(int i=0;i<ngroups;i++) {
-            for(int k=0;k<gw->numgroups;k++) {
-                if(groups[i] == gw->groups[k]) {
+            for(int k=0;k<gw->numstates;k++) {
+                if(groups[i] == gw->states[k]) {
                     check[k] = 1;
                 }
             }
         }
         
         int enable = 1;
-        for(int i=0;i<gw->numgroups;i++) {
+        for(int i=0;i<gw->numstates;i++) {
             if(check[i] == 0) {
                 enable = 0;
                 break;
@@ -577,70 +577,70 @@
     }
 }
 
-void ui_widget_set_groups(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, ...) {
+void ui_widget_set_states(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, ...) {
     if(enable == NULL) {
         enable = (ui_enablefunc)ui_set_enabled;
     }
-    // get groups
-    CxList *groups = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), 16);
+    // get states
+    CxList *states = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), 16);
     va_list ap;
     va_start(ap, enable);
-    int group;
-    while((group = va_arg(ap, int)) != -1) {
-        cxListAdd(groups, &group);
+    int state;
+    while((state = va_arg(ap, int)) != -1) {
+        cxListAdd(states, &state);
     }
     va_end(ap);
     
-    uic_add_group_widget(ctx, widget, enable, groups);
+    uic_add_state_widget(ctx, widget, enable, states);
     
-    cxListFree(groups);
+    cxListFree(states);
 }
 
-void ui_widget_set_groups2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, const int *groups, int ngroups) {
+void ui_widget_set_states2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, const int *states, int nstates) {
     if(enable == NULL) {
         enable = (ui_enablefunc)ui_set_enabled;
     }
-    CxList *ls = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), ngroups);
-    for(int i=0;i<ngroups;i++) {
-        cxListAdd(ls, groups+i);
+    CxList *ls = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), nstates);
+    for(int i=0;i<nstates;i++) {
+        cxListAdd(ls, states+i);
     }
-    uic_add_group_widget(ctx, widget, enable, ls);
+    uic_add_state_widget(ctx, widget, enable, ls);
     cxListFree(ls);
 }
 
 void ui_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, const int *states, int nstates) {
-    ui_widget_set_groups2(ctx, widget, (ui_enablefunc)ui_set_visible, states, nstates);
+    ui_widget_set_states2(ctx, widget, (ui_enablefunc)ui_set_visible, states, nstates);
 }
 
-size_t uic_group_array_size(const int *groups) {
+size_t uic_state_array_size(const int *states) {
     int i;
-    for(i=0;groups[i] >= 0;i++) { }
+    for(i=0;states[i] >= 0;i++) { }
     return i;
 }
 
-void uic_add_group_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *groups) {
-    uic_add_group_widget_i(ctx, widget, enable, cxListAt(groups, 0), cxListSize(groups));
+void uic_add_state_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *states) {
+    uic_add_state_widget_i(ctx, widget, enable, cxListAt(states, 0), cxListSize(states));
 }
 
-void uic_add_group_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *groups, size_t numgroups) {
+void uic_add_state_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *states, size_t numstates) {
     const CxAllocator *a = ctx->allocator;
-    UiGroupWidget gw;
+    UiStateWidget gw;
     
     gw.widget = widget;
     gw.enable = enable;
-    gw.numgroups = numgroups;
-    gw.groups = cxCalloc(a, numgroups, sizeof(int));
+    gw.numstates = numstates;
+    gw.states = cxCalloc(a, numstates, sizeof(int));
     
-    // copy groups
-    if(groups) {
-        memcpy(gw.groups, groups, gw.numgroups * sizeof(int));
+    // copy states
+    if(states) {
+        memcpy(gw.states, states, gw.numstates * sizeof(int));
     }
     
-    cxListAdd(ctx->group_widgets, &gw);
+    cxListAdd(ctx->state_widgets, &gw);
 }
 
-void uic_remove_group_widget(UiContext *ctx, void *widget) {
-    (void)cxListFindRemove(ctx->group_widgets, widget);
+void uic_remove_state_widget(UiContext *ctx, void *widget) {
+    (void)cxListFindRemove(ctx->state_widgets, widget);
 }
 
 UIEXPORT void *ui_allocator(UiContext *ctx) {
--- a/ui/common/context.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/context.h	Sun Dec 07 15:23:03 2025 +0100
@@ -43,7 +43,7 @@
 typedef struct UiVar            UiVar;
 typedef struct UiListPtr        UiListPtr;
 typedef struct UiListVar        UiListVar;
-typedef struct UiGroupWidget    UiGroupWidget;
+typedef struct UiStateWidget    UiStateWidget;
 typedef struct UiDestroyHandler UiDestroyHandler;
 
 typedef enum UiVarType {
@@ -69,8 +69,8 @@
     
     CxMap         *vars;
     
-    CxList        *groups; // int list
-    CxList        *group_widgets; // UiGroupWidget list
+    CxList        *states; // int list
+    CxList        *state_widgets; // UiGroupWidget list
     
     void (*attach_document)(UiContext *ctx, void *document);
     void (*detach_document2)(UiContext *ctx, void *document); 
@@ -102,11 +102,11 @@
     UiBool    bound;
 };
 
-struct UiGroupWidget {
+struct UiStateWidget {
     void          *widget;
     ui_enablefunc enable;
-    int           *groups;
-    int           numgroups;
+    int           *states;
+    int           numstates;
 };
 
 struct UiDestroyHandler {
@@ -145,11 +145,11 @@
 
 void uic_reg_var(UiContext *ctx, const char *name, UiVarType type, void *value);
 
-size_t uic_group_array_size(const int *groups);
-void uic_check_group_widgets(UiContext *ctx);
-void uic_add_group_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *groups);
-void uic_add_group_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *groups, size_t numgroups);
-void uic_remove_group_widget(UiContext *ctx, void *widget);
+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);
+void uic_add_state_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *states, size_t numstates);
+void uic_remove_state_widget(UiContext *ctx, void *widget);
 
 #ifdef	__cplusplus
 }
--- a/ui/common/menu.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/menu.c	Sun Dec 07 15:23:03 2025 +0100
@@ -89,20 +89,20 @@
     return s ? strdup(s) : NULL;
 }
 
-int* uic_copy_groups(const int* groups, size_t *ngroups) {
-    *ngroups = 0;
-    if (!groups) {
+int* uic_copy_states(const int* states, size_t *nstates) {
+    *nstates = 0;
+    if (!states) {
         return NULL;
     }
 
     size_t n;
-    for (n = 0; groups[n] > -1; n++) { }
+    for (n = 0; states[n] > -1; n++) { }
 
-    if (ngroups > 0) {
+    if (nstates > 0) {
         int* newarray = calloc(n+1, sizeof(int));
-        memcpy(newarray, groups, n * sizeof(int));
+        memcpy(newarray, states, n * sizeof(int));
         newarray[n] = -1;
-        *ngroups = n;
+        *nstates = n;
         return newarray;
     }
     return NULL;
@@ -152,7 +152,7 @@
     item->icon = nl_strdup(args->icon);
     item->userdata = args->onclickdata;
     item->callback = args->onclick;
-    item->groups = uic_copy_groups(args->groups, &item->ngroups);
+    item->states = uic_copy_states(args->states, &item->nstates);
 
     add_item((UiMenuItemI*)item);
 }
@@ -179,7 +179,7 @@
     item->varname = nl_strdup(args->varname);
     item->userdata = args->onchangedata;
     item->callback = args->onchange;
-    item->groups = uic_copy_groups(args->groups, &item->ngroups);
+    item->states = uic_copy_states(args->nstates, &item->nstates);
     
     add_item((UiMenuItemI*)item);
 }
@@ -196,7 +196,7 @@
     item->varname = nl_strdup(args->varname);
     item->userdata = args->onchangedata;
     item->callback = args->onchange;
-    item->groups = uic_copy_groups(args->groups, &item->ngroups);
+    item->states = uic_copy_states(args->nstates, &item->nstates);
 
     add_item((UiMenuItemI*)item);
 }
@@ -296,14 +296,14 @@
         }
         case UI_MENU_ITEM: {
             UiMenuItem *i = (UiMenuItem*)item;
-            free(i->groups);
+            free(i->states);
             free(i->label);
             free(i->icon);
             break;
         }
         case UI_MENU_CHECK_ITEM: {
             UiMenuCheckItem *i = (UiMenuCheckItem*)item;
-            free(i->groups);
+            free(i->states);
             free(i->label);
             free(i->icon);
             free(i->varname);
@@ -311,7 +311,7 @@
         }
         case UI_MENU_RADIO_ITEM: {
             UiMenuRadioItem *i = (UiMenuRadioItem*)item;
-            free(i->groups);
+            free(i->states);
             free(i->label);
             free(i->icon);
             free(i->varname);
--- a/ui/common/menu.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/menu.h	Sun Dec 07 15:23:03 2025 +0100
@@ -79,8 +79,8 @@
     char           *label;
     char           *icon;
     void           *userdata;
-    int            *groups;
-    size_t         ngroups;
+    int            *states;
+    size_t         nstates;
 };
 
 struct UiMenuCheckItem {
@@ -90,8 +90,8 @@
     char           *varname;
     ui_callback    callback;
     void           *userdata;
-    int            *groups;
-    size_t         ngroups;
+    int            *states;
+    size_t         nstates;
 };
 
 struct UiMenuRadioItem {
@@ -101,8 +101,8 @@
     char           *varname;
     ui_callback    callback;
     void           *userdata;
-    int            *groups;
-    size_t         ngroups;
+    int            *states;
+    size_t         nstates;
 };
 
 struct UiMenuItemList {
@@ -129,7 +129,7 @@
 
 void uic_add_menu_to_stack(UiMenu* menu);
 
-int* uic_copy_groups(const int* groups, size_t *ngroups);
+int* uic_copy_states(const int* states, size_t *nstates);
 
 void uic_set_tmp_eventdata(void *eventdata, int type);
 void* uic_get_tmp_eventdata(void);
--- a/ui/common/toolbar.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/common/toolbar.c	Sun Dec 07 15:23:03 2025 +0100
@@ -57,8 +57,8 @@
     newargs.tooltip = nl_strdup(args->tooltip);
     newargs.onclick = args->onclick;
     newargs.onclickdata = args->onclickdata;
-    newargs.groups = uic_copy_groups(args->groups, ngroups);
-    newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates);
+    newargs.states = uic_copy_states(args->states, ngroups);
+    newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates);
     return newargs;
 }
 
@@ -78,8 +78,8 @@
     newargs.varname = nl_strdup(args->varname);
     newargs.onchange = args->onchange;
     newargs.onchangedata = args->onchangedata;
-    newargs.groups = uic_copy_groups(args->groups, ngroups);
-    newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates);
+    newargs.states = uic_copy_states(args->states, ngroups);
+    newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates);
     return newargs;
 }
 
@@ -95,7 +95,7 @@
     newargs.label = nl_strdup(args->label);
     newargs.icon = nl_strdup(args->icon);
     newargs.tooltip = nl_strdup(args->tooltip);
-    newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates);
+    newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates);
     return newargs;
 }
 
--- a/ui/gtk/button.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/button.c	Sun Dec 07 15:23:03 2025 +0100
@@ -106,7 +106,7 @@
 UIWIDGET ui_button_create(UiObject *obj, UiButtonArgs *args) {
     GtkWidget *button = ui_create_button(obj, args->label, args->icon, args->tooltip, args->onclick, args->onclickdata, 0, FALSE);
     ui_set_name_and_style(button, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
     ct->add(ct, button, &layout);
@@ -308,9 +308,9 @@
             args->value,
             args->onchange,
             args->onchangedata,
-            args->enable_group);
+            args->enable_state);
     ui_set_name_and_style(widget, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, widget, args->groups);
+    ui_set_widget_groups(obj->ctx, widget, args->states);
     
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
@@ -370,10 +370,10 @@
             args->onchange,
             args->onchangedata,
             (ui_toggled_func)ui_checkbox_enable_state,
-            args->enable_group);
+            args->enable_state);
     
     ui_set_name_and_style(widget, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, widget, args->groups);
+    ui_set_widget_groups(obj->ctx, widget, args->states);
     
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
@@ -419,7 +419,7 @@
 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) {
     GtkWidget *widget = gtk_switch_new();
     ui_set_name_and_style(widget, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, widget, args->groups);
+    ui_set_widget_groups(obj->ctx, widget, args->states);
     
     UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
     if(var) {
@@ -541,7 +541,7 @@
     
     GtkWidget *rbutton = RADIOBUTTON_NEW(rg, args->label); 
     ui_set_name_and_style(rbutton, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, rbutton, args->groups);
+    ui_set_widget_groups(obj->ctx, rbutton, args->states);
     if(rgroup) {
 #if GTK_MAJOR_VERSION >= 4
         if(rg) {
@@ -895,7 +895,7 @@
     }
     
     ui_set_name_and_style(button, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
     ct->add(ct, button, &layout);
--- a/ui/gtk/entry.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/entry.c	Sun Dec 07 15:23:03 2025 +0100
@@ -79,7 +79,7 @@
 #endif
     GtkWidget *spin = gtk_spin_button_new_with_range(min, max, args->step);
     ui_set_name_and_style(spin, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, spin, args->groups);
+    ui_set_widget_groups(obj->ctx, spin, args->states);
     
     if(args->width > 0) {
         gtk_widget_set_size_request(spin, args->width, -1);
--- a/ui/gtk/headerbar.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/headerbar.c	Sun Dec 07 15:23:03 2025 +0100
@@ -164,7 +164,7 @@
         enum UiToolbarPos pos)
 {
     GtkWidget *button = ui_create_button(obj, item->args.label, item->args.icon, item->args.tooltip, item->args.onclick, item->args.onclickdata, 0, FALSE);
-    ui_set_widget_groups(obj->ctx, button, item->args.groups);
+    ui_set_widget_groups(obj->ctx, button, item->args.states);
     ui_set_widget_visibility_states(obj->ctx, button, item->args.visibility_states);
     WIDGET_ADD_CSS_CLASS(button, "flat");
     headerbar_add(headerbar, box, button, pos);
@@ -178,7 +178,7 @@
         enum UiToolbarPos pos)
 {
     GtkWidget *button = gtk_toggle_button_new();
-    ui_set_widget_groups(obj->ctx, button, item->args.groups);
+    ui_set_widget_groups(obj->ctx, button, item->args.states);
     ui_set_widget_visibility_states(obj->ctx, button, item->args.visibility_states);
     WIDGET_ADD_CSS_CLASS(button, "flat");
     ui_setup_togglebutton(obj, button, item->args.label, item->args.icon, item->args.tooltip, item->args.varname, NULL, item->args.onchange, item->args.onchangedata, 0);
--- a/ui/gtk/list.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/list.c	Sun Dec 07 15:23:03 2025 +0100
@@ -2228,7 +2228,7 @@
     SCROLLEDWINDOW_SET_CHILD(scroll_area, listbox);
     
     ui_set_name_and_style(listbox, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, listbox, args->groups);
+    ui_set_widget_groups(obj->ctx, listbox, args->states);
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
     ct->add(ct, scroll_area, &layout);
--- a/ui/gtk/menu.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/menu.c	Sun Dec 07 15:23:03 2025 +0100
@@ -132,7 +132,7 @@
     if(i->groups) {
         CxList *groups = cxArrayListCreateSimple(sizeof(int), i->ngroups);
         cxListAddArray(groups, i->groups, i->ngroups);
-        uic_add_group_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, groups);
+        uic_add_state_widget(obj->ctx, widget, (ui_enablefunc)ui_set_enabled, groups);
         cxListFree(groups);
     }
 }
@@ -462,10 +462,10 @@
     g_action_map_add_action(obj->ctx->action_map, G_ACTION(action));
     g_object_unref(action);
     
-    if(i->groups) {
-        CxList *groups = cxArrayListCreateSimple(sizeof(int), i->ngroups);
-        cxListAddArray(groups, i->groups, i->ngroups);
-        uic_add_group_widget(obj->ctx, action, (ui_enablefunc)action_enable, groups);
+    if(i->states) {
+        CxList *groups = cxArrayListCreateSimple(sizeof(int), i->nstates);
+        cxListAddArray(groups, i->states, i->nstates);
+        uic_add_state_widget(obj->ctx, action, (ui_enablefunc)action_enable, groups);
         cxListFree(groups);
     }
     
--- a/ui/gtk/text.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/text.c	Sun Dec 07 15:23:03 2025 +0100
@@ -113,7 +113,7 @@
     
     GtkWidget *text_area = gtk_text_view_new();
     ui_set_name_and_style(text_area, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, text_area, args->groups);
+    ui_set_widget_groups(obj->ctx, text_area, args->states);
     
     gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text_area), GTK_WRAP_WORD_CHAR);
     g_signal_connect(
@@ -603,7 +603,7 @@
 static UIWIDGET create_textfield(UiObject *obj, UiBool frameless, UiBool password, UiTextFieldArgs *args) {
     GtkWidget *textfield = gtk_entry_new();
     ui_set_name_and_style(textfield, args->name, args->style_class);
-    ui_set_widget_groups(obj->ctx, textfield, args->groups);
+    ui_set_widget_groups(obj->ctx, textfield, args->states);
     
     UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING);
     
--- a/ui/gtk/toolkit.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/toolkit.c	Sun Dec 07 15:23:03 2025 +0100
@@ -146,7 +146,7 @@
 void ui_show(UiObject *obj) {
     gboolean visible = gtk_widget_is_visible(obj->widget);
     
-    uic_check_group_widgets(obj->ctx);
+    uic_check_state_widgets(obj->ctx);
 #if GTK_MAJOR_VERSION >= 4
     gtk_window_present(GTK_WINDOW(obj->widget));
 #elif GTK_MAJOR_VERSION <= 3
@@ -509,13 +509,13 @@
     if(!groups) {
         return;
     }
-    size_t ngroups = uic_group_array_size(groups);
+    size_t ngroups = uic_state_array_size(groups);
     ui_set_widget_ngroups(ctx, widget, groups, ngroups);
 }
 
 void ui_set_widget_ngroups(UiContext *ctx, GtkWidget *widget, const int *groups, size_t ngroups) {
     if(ngroups > 0) {
-        uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
+        uic_add_state_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
         ui_set_enabled(widget, FALSE);
     }
 }
@@ -524,14 +524,14 @@
     if(!states) {
         return;
     }
-    size_t nstates = uic_group_array_size(states);
+    size_t nstates = uic_state_array_size(states);
     ui_set_widget_nvisibility_states(ctx, widget, states, nstates);
 }
 
 
 void ui_set_widget_nvisibility_states(UiContext *ctx, GtkWidget *widget, const int *states, size_t ngroups) {
     if(ngroups > 0) {
-        uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_visible, states, ngroups);
+        uic_add_state_widget_i(ctx, widget, (ui_enablefunc)ui_set_visible, states, ngroups);
         ui_set_visible(widget, FALSE);
     }
 }
--- a/ui/gtk/webview.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/gtk/webview.c	Sun Dec 07 15:23:03 2025 +0100
@@ -60,7 +60,7 @@
         }
     }
     
-    ui_set_widget_groups(obj->ctx, webview, args->groups);
+    ui_set_widget_groups(obj->ctx, webview, args->states);
     UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
     UiLayout layout = UI_ARGS2LAYOUT(args);
     ct->add(ct, webview, &layout);
--- a/ui/motif/button.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/motif/button.c	Sun Dec 07 15:23:03 2025 +0100
@@ -61,7 +61,7 @@
     XtManageChild(button);
     ui_container_add(ctn, button);
     
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     
     if(args->onclick) {
         UiEventData *eventdata = malloc(sizeof(UiEventData));
@@ -118,9 +118,9 @@
     XtManageChild(button);
     ui_container_add(ctn, button);
     
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     
-    ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group);
+    ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_state);
     
     XmStringFree(label);
     return button;
@@ -146,9 +146,9 @@
     XtManageChild(button);
     ui_container_add(ctn, button);
     
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     
-    ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group);
+    ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_state);
     
     XmStringFree(label);
     return button;
@@ -365,7 +365,7 @@
     XtManageChild(button);
     ui_container_add(ctn, button);
     
-    ui_set_widget_groups(obj->ctx, button, args->groups);
+    ui_set_widget_groups(obj->ctx, button, args->states);
     
     UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER);
     if(var) {
@@ -402,7 +402,7 @@
     event->userdata = args->onchangedata;
     event->observers = NULL;
     event->var = var;
-    event->value = args->enable_group;
+    event->value = args->enable_state;
     XtAddCallback(
             button,
             XmNvalueChangedCallback,
--- a/ui/motif/entry.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/motif/entry.c	Sun Dec 07 15:23:03 2025 +0100
@@ -86,7 +86,7 @@
     XtManageChild(spinbox);
     ui_container_add(ctn, spinbox);
     
-    ui_set_widget_groups(obj->ctx, spinbox, args->groups);
+    ui_set_widget_groups(obj->ctx, spinbox, args->states);
     
     WidgetList children;
     Cardinal num_children;
--- a/ui/motif/menu.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/motif/menu.c	Sun Dec 07 15:23:03 2025 +0100
@@ -150,7 +150,7 @@
                 eventdata);
     }
     
-    ui_set_widget_groups(obj->ctx, mitem, it->groups);
+    ui_set_widget_groups(obj->ctx, mitem, it->states);
 }
 
 void add_menuseparator_widget(Widget p, int i, UiMenuItemI *item, UiObject *obj) {
@@ -182,7 +182,7 @@
     
     ui_bind_togglebutton(obj, checkbox, it->varname, NULL, it->callback, it->userdata, 0);
     
-    ui_set_widget_groups(obj->ctx, checkbox, it->groups);
+    ui_set_widget_groups(obj->ctx, checkbox, it->states);
 }
 
 void add_radioitem_widget(Widget p, int index, UiMenuItemI *item, UiObject *obj) {
--- a/ui/motif/text.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/motif/text.c	Sun Dec 07 15:23:03 2025 +0100
@@ -408,7 +408,7 @@
     XtManageChild(textfield);
     ui_container_add(ctn, textfield);
     
-    ui_set_widget_groups(obj->ctx, textfield, args->groups);
+    ui_set_widget_groups(obj->ctx, textfield, args->states);
     
     UiEventDataExt *eventdata = malloc(sizeof(UiEventDataExt));
     memset(eventdata, 0, sizeof(UiEventDataExt));
--- a/ui/motif/toolkit.c	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/motif/toolkit.c	Sun Dec 07 15:23:03 2025 +0100
@@ -155,7 +155,7 @@
 }
 
 void ui_show(UiObject *obj) {
-    uic_check_group_widgets(obj->ctx);
+    uic_check_state_widgets(obj->ctx);
     if(!XtIsRealized(obj->widget)) {
         XtRealizeWidget(obj->widget);
         obj->ref++;
@@ -332,13 +332,13 @@
     if(!groups) {
         return;
     }
-    size_t ngroups = uic_group_array_size(groups);
+    size_t ngroups = uic_state_array_size(groups);
     ui_set_widget_ngroups(ctx, widget, groups, ngroups);
 }
 
 void ui_set_widget_ngroups(UiContext *ctx, Widget widget, const int *groups, size_t ngroups) {
     if(ngroups > 0) {
-        uic_add_group_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
+        uic_add_state_widget_i(ctx, widget, (ui_enablefunc)ui_set_enabled, groups, ngroups);
         ui_set_enabled(widget, FALSE);
     }
 }
--- a/ui/qt/menu.cpp	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/qt/menu.cpp	Sun Dec 07 15:23:03 2025 +0100
@@ -88,8 +88,8 @@
     }
     
     if(states) {
-        size_t nstates = uic_group_array_size(states);
-        uic_add_group_widget_i(obj->ctx, action, (ui_enablefunc)ui_action_enable, states, nstates);
+        size_t nstates = uic_state_array_size(states);
+        uic_add_state_widget_i(obj->ctx, action, (ui_enablefunc)ui_action_enable, states, nstates);
         action->setEnabled(false);
     }
     
@@ -98,7 +98,7 @@
 
 void add_menuitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj) {
     UiMenuItem *it = (UiMenuItem*)item;
-    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->groups);
+    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->states);
     parent->addAction(action);
     QObject::connect(action, SIGNAL(triggered()), action, SLOT(trigger()));
 }
@@ -110,7 +110,7 @@
 void add_checkitem_widget(QMenu *parent, int i, UiMenuItemI *item, UiObject *obj) {
     UiMenuCheckItem *it = (UiMenuCheckItem*)item;
     
-    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->groups);
+    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->states);
     parent->addAction(action);
     action->setCheckable(true);
     action->prepare_event = ui_checkableaction_prepare_event;
@@ -130,7 +130,7 @@
 void add_radioitem_widget(QMenu *parent, int index, UiMenuItemI *item, UiObject *obj) {
     UiMenuRadioItem *it = (UiMenuRadioItem*)item;
     
-    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->groups);
+    UiAction *action = create_action(obj, it->icon, it->label, it->callback, it->userdata, it->states);
     parent->addAction(action);
     action->setCheckable(true);
     action->prepare_event = ui_actiongroup_prepare_event;
--- a/ui/ui/button.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/button.h	Sun Dec 07 15:23:03 2025 +0100
@@ -65,7 +65,7 @@
     ui_callback onclick;
     void *onclickdata;
     
-    const int *groups;
+    const int *states;
 } UiButtonArgs;
 
 typedef struct UiToggleArgs {
@@ -93,9 +93,9 @@
     const char *varname;
     ui_callback onchange;
     void *onchangedata;
-    int enable_group;
+    int enable_state;
     
-    const int *groups;
+    const int *states;
 } UiToggleArgs;
 
 typedef struct UiLinkButtonArgs {
@@ -124,7 +124,7 @@
     UiBool nofollow;
     UiLinkType type;
     
-    const int *groups;
+    const int *states;
 } UiLinkButtonArgs;
  
 #define ui_button(obj, ...) ui_button_create(obj, &(UiButtonArgs){ __VA_ARGS__ } )
--- a/ui/ui/entry.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/entry.h	Sun Dec 07 15:23:03 2025 +0100
@@ -65,7 +65,7 @@
     ui_callback onchange;
     void* onchangedata;
     
-    const int *groups;
+    const int *states;
 } UiSpinBoxArgs;
 
 
--- a/ui/ui/menu.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/menu.h	Sun Dec 07 15:23:03 2025 +0100
@@ -43,7 +43,7 @@
 	ui_callback onclick;
 	void* onclickdata;
 
-	const int* groups;
+	const int* states;
 } UiMenuItemArgs;
 
 typedef struct UiMenuToggleItemArgs {
@@ -54,7 +54,7 @@
 	ui_callback onchange;
 	void* onchangedata;
 
-	const int* groups;
+	const int* nstates;
 } UiMenuToggleItemArgs;
 
 typedef struct UiMenuItemListArgs {
--- a/ui/ui/text.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/text.h	Sun Dec 07 15:23:03 2025 +0100
@@ -59,7 +59,7 @@
     ui_callback onchange;
     void *onchangedata;
     
-    const int *groups;
+    const int *states;
 } UiTextAreaArgs;
     
 typedef struct UiTextFieldArgs {
@@ -87,7 +87,7 @@
     ui_callback onactivate;
     void *onactivatedata;
     
-    const int *groups;
+    const int *states;
 } UiTextFieldArgs;
 
 typedef struct UiPathElmRet {
--- a/ui/ui/toolbar.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/toolbar.h	Sun Dec 07 15:23:03 2025 +0100
@@ -44,7 +44,7 @@
     ui_callback onclick;
     void* onclickdata;
 
-    const int *groups;
+    const int *states;
     const int *visibility_states;
 } UiToolbarItemArgs;
 
@@ -57,7 +57,7 @@
     ui_callback onchange;
     void *onchangedata;
 
-    const int *groups;
+    const int *states;
     const int *visibility_states;
 } UiToolbarToggleItemArgs;
 
--- a/ui/ui/toolkit.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/toolkit.h	Sun Dec 07 15:23:03 2025 +0100
@@ -570,8 +570,8 @@
 UIEXPORT void ui_attach_document(UiContext *ctx, void *document);
 UIEXPORT void ui_detach_document(UiContext *ctx, void *document);
 
-UIEXPORT void ui_widget_set_groups(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, ...);
-UIEXPORT void ui_widget_set_groups2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, const int *groups, int ngroups);
+UIEXPORT void ui_widget_set_states(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, ...);
+UIEXPORT void ui_widget_set_states2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, const int *states, int nstates);
 UIEXPORT void ui_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, const int *states, int nstates);
 
 UIEXPORT void ui_set_group(UiContext *ctx, int group);
--- a/ui/ui/tree.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/tree.h	Sun Dec 07 15:23:03 2025 +0100
@@ -179,7 +179,7 @@
     ui_list_savefunc onsave;
     void *onsavedata;
     
-    const int *groups;
+    const int *states;
 };
 
 typedef void (*ui_sublist_getvalue_func)(UiList *list, void *sublist_userdata, void *rowdata, int index, UiSubListItem *item, void *userdata);
@@ -235,7 +235,7 @@
     const char *name;
     const char *style_class;
     
-    const int *groups;
+    const int *states;
     
     /*
      * static list of sublists
--- a/ui/ui/webview.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/webview.h	Sun Dec 07 15:23:03 2025 +0100
@@ -68,7 +68,7 @@
     UiGeneric *value;
     const char *varname;
     
-    const int* groups;
+    const int* states;
 } UiWebviewArgs;
 
 #define ui_webview(obj, ...) ui_webview_create(obj, &(UiWebviewArgs){ __VA_ARGS__ } )
--- a/ui/ui/window.h	Sun Dec 07 14:39:03 2025 +0100
+++ b/ui/ui/window.h	Sun Dec 07 15:23:03 2025 +0100
@@ -61,10 +61,10 @@
     const char *lbutton2;
     const char *rbutton3;
     const char *rbutton4;
-    const int *lbutton1_groups;
-    const int *lbutton2_groups;
-    const int *rbutton3_groups;
-    const int *rbutton4_groups;
+    const int *lbutton1_states;
+    const int *lbutton2_states;
+    const int *rbutton3_states;
+    const int *rbutton4_states;
     int default_button;
     int width;
     int height;

mercurial