summaryrefslogtreecommitdiffstats
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 5386353e12..9a35af8e34 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -382,6 +382,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
struct gui_synclist lists;
const struct menu_item_ex *temp, *menu;
int ret = 0;
+ bool redraw_lists;
#ifdef HAS_BUTTONBAR
struct gui_buttonbar buttonbar;
#endif
@@ -415,6 +416,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
while (!done)
{
talk_item = false;
+ redraw_lists = false;
gui_syncstatusbar_draw(&statusbars, true);
action = get_action(CONTEXT_MAINMENU,HZ);
/* HZ so the status bar redraws corectly */
@@ -433,6 +435,11 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
ret = MENU_SELECTED_EXIT; /* will exit after returning
from selection */
}
+ else if (action == ACTION_REDRAW)
+ {
+ action = old_action;
+ redraw_lists = true;
+ }
}
if (gui_synclist_do_button(&lists,action,LIST_WRAP_UNLESS_HELD))
@@ -603,6 +610,9 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
}
if (talk_item && !done)
talk_menu_item(menu, &lists);
+
+ if (redraw_lists)
+ gui_synclist_draw(&lists);
}
action_signalscreenchange();
if (start_selected)