--- a/ui/common/toolbar.c Wed Jun 17 20:42:21 2026 +0200 +++ b/ui/common/toolbar.c Wed Jun 17 20:54:22 2026 +0200 @@ -85,6 +85,25 @@ return newargs; } +static UiToolbarContentToggleItemArgs contenttoggleitemargs_copy(UiToolbarContentToggleItemArgs *args, size_t *ngroups, size_t *nvstates) { + UiToolbarContentToggleItemArgs newargs; + newargs.label0 = nl_strdup(args->label0); + newargs.icon0 = nl_strdup(args->icon0); + newargs.tooltip0 = nl_strdup(args->tooltip0); + newargs.label1 = nl_strdup(args->label1); + newargs.icon1 = nl_strdup(args->icon1); + newargs.tooltip1 = nl_strdup(args->tooltip1); + newargs.varname = nl_strdup(args->varname); + newargs.onchange = args->onchange; + newargs.onchangedata = args->onchangedata; + newargs.action = nl_strdup(args->action); + newargs.toggled_by_state = args->toggled_by_state; + newargs.istogglebutton = args->istogglebutton; + newargs.states = uic_copy_states(args->states, ngroups); + newargs.visibility_states = uic_copy_states(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; @@ -92,6 +111,13 @@ cxMapPut(toolbar_items, name, item); } +void ui_toolbar_content_toggleitem_create(const char* name, UiToolbarContentToggleItemArgs *args) { + UiToolbarContentToggleItem* item = malloc(sizeof(UiToolbarContentToggleItem)); + item->item.type = UI_TOOLBAR_CONTENT_TOGGLEITEM; + item->args = contenttoggleitemargs_copy(args, &item->nstates, &item->nvstates); + cxMapPut(toolbar_items, name, item); +} + static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) { UiToolbarMenuArgs newargs; newargs.label = nl_strdup(args->label);