ui/common/menu.c

changeset 112
c3f2f16fa4b8
parent 110
c00e968d018b
child 113
dde28a806552
--- a/ui/common/menu.c	Sat Oct 04 14:54:25 2025 +0200
+++ b/ui/common/menu.c	Sun Oct 19 21:20:08 2025 +0200
@@ -133,7 +133,6 @@
     item->item.type = UI_MENU_ITEM;
 
     item->label = nl_strdup(args->label);
-    item->stockid = nl_strdup(args->stockid);
     item->icon = nl_strdup(args->icon);
     item->userdata = args->onclickdata;
     item->callback = args->onclick;
@@ -160,7 +159,6 @@
     item->item.type = UI_MENU_CHECK_ITEM;
 
     item->label = nl_strdup(args->label);
-    item->stockid = nl_strdup(args->stockid);
     item->icon = nl_strdup(args->icon);
     item->varname = nl_strdup(args->varname);
     item->userdata = args->onchangedata;
@@ -178,7 +176,6 @@
     item->item.type = UI_MENU_RADIO_ITEM;
 
     item->label = nl_strdup(args->label);
-    item->stockid = nl_strdup(args->stockid);
     item->icon = nl_strdup(args->icon);
     item->varname = nl_strdup(args->varname);
     item->userdata = args->onchangedata;
@@ -258,6 +255,7 @@
     builder->menus_begin = NULL;
     builder->menus_end = NULL;
     builder->current = cxLinkedListCreate(cxDefaultAllocator, NULL, CX_STORE_POINTERS);
+    builder->ref = 1;
     current_builder = builder;
     *out_builder = builder;
     
@@ -284,7 +282,6 @@
             UiMenuItem *i = (UiMenuItem*)item;
             free(i->groups);
             free(i->label);
-            free(i->stockid);
             free(i->icon);
             break;
         }
@@ -292,7 +289,6 @@
             UiMenuCheckItem *i = (UiMenuCheckItem*)item;
             free(i->groups);
             free(i->label);
-            free(i->stockid);
             free(i->icon);
             free(i->varname);
             break;
@@ -301,9 +297,8 @@
             UiMenuRadioItem *i = (UiMenuRadioItem*)item;
             free(i->groups);
             free(i->label);
-            free(i->stockid);
             free(i->icon);
-            //free(i->varname);
+            free(i->varname);
             break;
         }
         case UI_MENU_ITEM_LIST: {
@@ -330,3 +325,13 @@
     cxListFree(builder->current);
     free(builder);
 }
+
+void ui_menubuilder_ref(UiMenuBuilder *builder) {
+    builder->ref++;
+}
+
+void ui_menubuilder_unref(UiMenuBuilder *builder) {
+    if(--builder->ref <= 0) {
+        ui_menubuilder_free(builder);
+    }
+}

mercurial