ui/common/toolbar.c

changeset 1206
4637da12bc6c
parent 1096
655349c3021e
--- 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);

mercurial