diff --git a/src/util/gui/menu.c b/src/util/gui/menu.c index 03b2a1956..d1eeb8d2d 100644 --- a/src/util/gui/menu.c +++ b/src/util/gui/menu.c @@ -56,7 +56,14 @@ enum GUIMenuExitReason GUIShowMenu(struct GUIParams* params, struct GUIMenu* men } if (newInput & (1 << GUI_INPUT_SELECT)) { *item = *GUIMenuItemListGetPointer(&menu->items, menu->index); - return GUI_MENU_EXIT_ACCEPT; + if (item->submenu) { + enum GUIMenuExitReason reason = GUIShowMenu(params, item->submenu, item); + if (reason != GUI_MENU_EXIT_BACK) { + return reason; + } + } else { + return GUI_MENU_EXIT_ACCEPT; + } } if (newInput & (1 << GUI_INPUT_BACK)) { return GUI_MENU_EXIT_BACK; diff --git a/src/util/gui/menu.h b/src/util/gui/menu.h index f668470e8..3ffb1c686 100644 --- a/src/util/gui/menu.h +++ b/src/util/gui/menu.h @@ -8,9 +8,11 @@ #include "util/vector.h" +struct GUIMenu; struct GUIMenuItem { const char* title; void* data; + struct GUIMenu* submenu; }; DECLARE_VECTOR(GUIMenuItemList, struct GUIMenuItem);