diff -r c3f2f16fa4b8 -r dde28a806552 ui/common/toolbar.c --- 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;