ui/common/toolbar.c

changeset 113
dde28a806552
parent 112
c3f2f16fa4b8
--- a/ui/common/toolbar.c	Sun Oct 19 21:20:08 2025 +0200
+++ b/ui/common/toolbar.c	Mon Nov 10 21:52:51 2025 +0100
@@ -50,7 +50,7 @@
     return str ? strdup(str) : NULL;
 }
 
-static UiToolbarItemArgs itemargs_copy(UiToolbarItemArgs *args, size_t *ngroups) {
+static UiToolbarItemArgs itemargs_copy(UiToolbarItemArgs *args, size_t *ngroups, size_t *nvstates) {
     UiToolbarItemArgs newargs;
     newargs.label = nl_strdup(args->label);
     newargs.icon = nl_strdup(args->icon);
@@ -58,18 +58,19 @@
     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);
     return newargs;
 }
 
 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args) {
     UiToolbarItem* item = malloc(sizeof(UiToolbarItem));
     item->item.type = UI_TOOLBAR_ITEM;
-    item->args = itemargs_copy(args, &item->ngroups);
+    item->args = itemargs_copy(args, &item->ngroups, &item->nvstates);
     cxMapPut(toolbar_items, name, item);
 }
 
 
-static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups) {
+static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups, size_t *nvstates) {
     UiToolbarToggleItemArgs newargs;
     newargs.label = nl_strdup(args->label);
     newargs.icon = nl_strdup(args->icon);
@@ -78,21 +79,23 @@
     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);
     return newargs;
 }
 
 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) {
     UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem));
     item->item.type = UI_TOOLBAR_TOGGLEITEM;
-    item->args = toggleitemargs_copy(args, &item->ngroups);
+    item->args = toggleitemargs_copy(args, &item->ngroups, &item->nvstates);
     cxMapPut(toolbar_items, name, item);
 }
 
-static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args) {
+static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) {
     UiToolbarMenuArgs newargs;
     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);
     return newargs;
 }
 
@@ -100,7 +103,7 @@
     UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem));
     item->item.type = UI_TOOLBAR_MENU;
     memset(&item->menu, 0, sizeof(UiMenu));
-    item->args = menuargs_copy(args);
+    item->args = menuargs_copy(args, &item->nvstates);
 
     item->end = 0;
 

mercurial