summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/apps/menu.c b/apps/menu.c
index c657c2c1ca..c8fc5f6264 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -411,17 +411,20 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
411 } 411 }
412 else if (action == ACTION_STD_CANCEL) 412 else if (action == ACTION_STD_CANCEL)
413 { 413 {
414 bool exiting_menu = false;
414 in_stringlist = false; 415 in_stringlist = false;
415 if (menu_callback) 416 if (menu_callback)
416 menu_callback(ACTION_EXIT_MENUITEM, menu); 417 menu_callback(ACTION_EXIT_MENUITEM, menu);
417 418
418 if (menu->flags&MENU_EXITAFTERTHISMENU) 419 if (menu->flags&MENU_EXITAFTERTHISMENU)
419 done = true; 420 done = true;
421 else if ((menu->flags&MENU_TYPE_MASK) == MT_MENU)
422 exiting_menu = true;
420 if (stack_top > 0) 423 if (stack_top > 0)
421 { 424 {
422 stack_top--; 425 stack_top--;
423 menu = menu_stack[stack_top]; 426 menu = menu_stack[stack_top];
424 if (menu->flags&MENU_EXITAFTERTHISMENU) 427 if (!exiting_menu && (menu->flags&MENU_EXITAFTERTHISMENU))
425 done = true; 428 done = true;
426 else 429 else
427 init_menu_lists(menu, &lists, 430 init_menu_lists(menu, &lists,