diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/menu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/menu.c b/apps/menu.c index dd5a23b933..4b71cbf40a 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -74,6 +74,7 @@ static void menu_talk_selected(int m); | |||
74 | 74 | ||
75 | /* used to allow for dynamic menus */ | 75 | /* used to allow for dynamic menus */ |
76 | #define MAX_MENU_SUBITEMS 64 | 76 | #define MAX_MENU_SUBITEMS 64 |
77 | static struct menu_item_ex *current_submenus_menu; | ||
77 | static int current_subitems[MAX_MENU_SUBITEMS]; | 78 | static int current_subitems[MAX_MENU_SUBITEMS]; |
78 | static int current_subitems_count = 0; | 79 | static int current_subitems_count = 0; |
79 | 80 | ||
@@ -204,7 +205,8 @@ static void init_menu_lists(const struct menu_item_ex *menu, | |||
204 | current_subitems_count++; | 205 | current_subitems_count++; |
205 | } | 206 | } |
206 | } | 207 | } |
207 | 208 | current_submenus_menu = menu; | |
209 | |||
208 | gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1); | 210 | gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1); |
209 | #ifdef HAVE_LCD_BITMAP | 211 | #ifdef HAVE_LCD_BITMAP |
210 | if (menu->callback_and_desc->icon_id == Icon_NOICON) | 212 | if (menu->callback_and_desc->icon_id == Icon_NOICON) |
@@ -589,6 +591,8 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) | |||
589 | } | 591 | } |
590 | if (type != MT_MENU && menu_callback) | 592 | if (type != MT_MENU && menu_callback) |
591 | menu_callback(ACTION_EXIT_MENUITEM,temp); | 593 | menu_callback(ACTION_EXIT_MENUITEM,temp); |
594 | if (current_submenus_menu != menu) | ||
595 | init_menu_lists(menu,&lists,selected,true); | ||
592 | /* callback was changed, so reload the menu's callback */ | 596 | /* callback was changed, so reload the menu's callback */ |
593 | get_menu_callback(menu, &menu_callback); | 597 | get_menu_callback(menu, &menu_callback); |
594 | #ifdef HAS_BUTTONBAR | 598 | #ifdef HAS_BUTTONBAR |