From 0baad43a935319d417f89f2c5c00e764e42a99ad Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Thu, 21 Jun 2007 12:32:10 +0000 Subject: Accept FS#7313 - make the menus talk more often git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13679 a1c6a512-1295-4272-9138-f99709370657 --- apps/menu.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'apps') diff --git a/apps/menu.c b/apps/menu.c index 8f0d1318ef..8720ea6062 100644 --- a/apps/menu.c +++ b/apps/menu.c @@ -391,6 +391,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) int stack_top = 0; bool in_stringlist, done = false; menu_callback_type menu_callback = NULL; + bool talk_item = false; if (start_menu == NULL) menu = &main_menu_; else menu = start_menu; @@ -413,6 +414,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) while (!done) { + talk_item = false; gui_syncstatusbar_draw(&statusbars, true); action = get_action(CONTEXT_MAINMENU,HZ); /* HZ so the status bar redraws corectly */ @@ -436,7 +438,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) if (gui_synclist_do_button(&lists,action,LIST_WRAP_UNLESS_HELD)) { - talk_menu_item(menu, &lists); + talk_item = true; } else if (action == ACTION_TREE_WPS) { @@ -477,9 +479,9 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) done = true; init_menu_lists(menu, &lists, menu_stack_selected_item[stack_top], false); - talk_menu_item(menu, &lists); /* new menu, so reload the callback */ get_menu_callback(menu, &menu_callback); + talk_item = true; } else if (menu != &root_menu_) { @@ -519,12 +521,13 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) stack_top++; init_menu_lists(temp, &lists, 0, true); menu = temp; - talk_menu_item(menu, &lists); + talk_item = true; } break; case MT_FUNCTION_CALL: { int return_value; + talk_item = true; action_signalscreenchange(); if (temp->flags&MENU_FUNC_USEPARAM) return_value = temp->function->function_w_param( @@ -546,6 +549,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) { if (do_setting_from_menu(temp)) init_menu_lists(menu, &lists, 0, true); + talk_item = true; break; } case MT_RETURN_ID: @@ -562,6 +566,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) stack_top++; menu = temp; init_menu_lists(menu,&lists,0,false); + talk_item = true; in_stringlist = true; } break; @@ -596,6 +601,8 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected) ret = MENU_ATTACHED_USB; done = true; } + if (talk_item && !done) + talk_menu_item(menu, &lists); } action_signalscreenchange(); if (start_selected) -- cgit v1.2.3