diff -r 7ebc5a747c6f -r 93b9f502cb88 ui/common/menu.c --- 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; +}