diff options
Diffstat (limited to 'apps/menu.c')
-rw-r--r-- | apps/menu.c | 5 |
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, |