ui/common/menu.c

branch
newapi
changeset 207
93b9f502cb88
parent 205
b1ac0dd1d38b
child 208
f632bc0589ab
--- a/ui/common/menu.c	Wed Oct 11 10:54:24 2023 +0200
+++ b/ui/common/menu.c	Wed Oct 11 19:11:38 2023 +0200
@@ -74,6 +74,8 @@
     menu->items_begin  = NULL;
     menu->items_end    = NULL;
     menu->parent       = NULL;    
+
+    menu->end = 0;
     
     add_menu(menu);
     cxListAdd(current, menu);
@@ -89,12 +91,14 @@
     menu->items_begin = NULL;
     menu->items_end   = NULL;
     menu->parent      = NULL;
+
+    menu->end = 0;
     
     // add submenu to current menu
     add_item((UiMenuItemI*)menu);
     
     // set the submenu to current menu
-    cxListInsert(current, 0, menu);
+    uic_add_menu_to_stack(menu);
 }
 
 void ui_submenu_end() {
@@ -104,6 +108,10 @@
     cxListRemove(current, 0);
 }
 
+UIEXPORT void ui_menu_end(void) {
+    cxListRemove(current, 0);
+}
+
 void ui_menuitem(char *label, ui_callback f, void *userdata) {
     ui_menuitem_gr(label, f, userdata, -1);
 }
@@ -248,9 +256,27 @@
     add_item((UiMenuItemI*)item);
 }
 
-
+void uic_add_menu_to_stack(UiMenu* menu) {
+    cxListInsert(current, 0, menu);
+}
 
 UiMenu* uic_get_menu_list(void) {
     return menus_begin;
 }
 
+
+
+
+UIEXPORT void ui_menu_close(void) {
+    UiMenu* menu = cxListAt(current, 0);
+    menu->end = 1;
+}
+
+UIEXPORT int ui_menu_is_open(void) {
+    UiMenu* menu = cxListAt(current, 0);
+    if (menu->end) {
+        ui_menu_end();
+        return 0;
+    }
+    return 1;
+}

mercurial