--- 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;