ui/common/menu.c

changeset 44
473954dc6b74
parent 29
3fc287f06305
child 49
2f71f4ee247a
--- a/ui/common/menu.c	Mon Jun 17 21:20:58 2024 +0200
+++ b/ui/common/menu.c	Sun Sep 29 13:32:51 2024 +0200
@@ -38,6 +38,8 @@
 static UiMenu *menus_end;
 static CxList *current;
 
+static int menu_item_counter = 0;
+
 static void add_menu(UiMenu *menu) {
     cx_linked_list_add(
             (void**)&menus_begin,
@@ -57,6 +59,10 @@
             item);
 }
 
+static void mitem_set_id(UiMenuItemI *item) {
+    snprintf(item->id, 8, "%x", menu_item_counter++);
+}
+
 static char* nl_strdup(const char* s) {
     return s ? strdup(s) : NULL;
 }
@@ -86,6 +92,7 @@
     
     // create menu
     UiMenu *menu = malloc(sizeof(UiMenu));
+    mitem_set_id(&menu->item);
     menu->item.prev = NULL;
     menu->item.next = NULL;
     menu->item.type = UI_MENU;
@@ -118,6 +125,7 @@
     }
 
     UiMenuItem* item = malloc(sizeof(UiMenuItem));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_ITEM;
@@ -138,6 +146,7 @@
     }
     
     UiMenuItemI  *item = malloc(sizeof(UiMenuItemI));
+    item->id[0] = 0;
     item->prev = NULL;
     item->next = NULL;
     item->type = UI_MENU_SEPARATOR;
@@ -151,6 +160,7 @@
     }
     
     UiMenuCheckItem *item = malloc(sizeof(UiMenuCheckItem));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_CHECK_ITEM;
@@ -172,6 +182,7 @@
     }
 
     UiMenuCheckItem* item = malloc(sizeof(UiMenuCheckItem));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_CHECK_ITEM;
@@ -193,6 +204,7 @@
     }
     
     UiMenuItemList*item = malloc(sizeof(UiMenuItemList));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_ITEM_LIST;
@@ -210,6 +222,7 @@
     }
 
     UiMenuItemList* item = malloc(sizeof(UiMenuItemList));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_CHECKITEM_LIST;
@@ -226,6 +239,7 @@
     }
 
     UiMenuItemList* item = malloc(sizeof(UiMenuItemList));
+    mitem_set_id(&item->item);
     item->item.prev = NULL;
     item->item.next = NULL;
     item->item.type = UI_MENU_RADIOITEM_LIST;

mercurial