summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 929a14e9f0..5a388522fa 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -192,7 +192,7 @@ static void init_menu_lists(const struct menu_item_ex *menu,
192 if (menu_callback) 192 if (menu_callback)
193 { 193 {
194 if (menu_callback(ACTION_REQUEST_MENUITEM, 194 if (menu_callback(ACTION_REQUEST_MENUITEM,
195 type==MT_RETURN_ID ? (void*)(intptr_t)i: menu->submenus[i]) 195 type==MT_RETURN_ID ? (void*)(intptr_t)i: menu->submenus[i], lists)
196 != ACTION_EXIT_MENUITEM) 196 != ACTION_EXIT_MENUITEM)
197 { 197 {
198 current_subitems[current_subitems_count] = i; 198 current_subitems[current_subitems_count] = i;
@@ -246,7 +246,7 @@ static void init_menu_lists(const struct menu_item_ex *menu,
246 246
247 get_menu_callback(menu,&menu_callback); 247 get_menu_callback(menu,&menu_callback);
248 if (callback && menu_callback) 248 if (callback && menu_callback)
249 menu_callback(ACTION_ENTER_MENUITEM,menu); 249 menu_callback(ACTION_ENTER_MENUITEM, menu, lists);
250} 250}
251 251
252static int talk_menu_item(int selected_item, void *data) 252static int talk_menu_item(int selected_item, void *data)
@@ -430,7 +430,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
430 if (menu_callback) 430 if (menu_callback)
431 { 431 {
432 int old_action = action; 432 int old_action = action;
433 action = menu_callback(action, menu); 433 action = menu_callback(action, menu, &lists);
434 if (action == ACTION_EXIT_AFTER_THIS_MENUITEM) 434 if (action == ACTION_EXIT_AFTER_THIS_MENUITEM)
435 { 435 {
436 action = old_action; 436 action = old_action;
@@ -560,7 +560,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
560 /* might be leaving list, so stop scrolling */ 560 /* might be leaving list, so stop scrolling */
561 gui_synclist_scroll_stop(&lists); 561 gui_synclist_scroll_stop(&lists);
562 if (menu_callback) 562 if (menu_callback)
563 menu_callback(ACTION_EXIT_MENUITEM, menu); 563 menu_callback(ACTION_EXIT_MENUITEM, menu, &lists);
564 564
565 if (menu->flags&MENU_EXITAFTERTHISMENU) 565 if (menu->flags&MENU_EXITAFTERTHISMENU)
566 done = true; 566 done = true;
@@ -612,7 +612,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
612 get_menu_callback(temp, &menu_callback); 612 get_menu_callback(temp, &menu_callback);
613 if (menu_callback) 613 if (menu_callback)
614 { 614 {
615 action = menu_callback(ACTION_ENTER_MENUITEM,temp); 615 action = menu_callback(ACTION_ENTER_MENUITEM, temp, &lists);
616 if (action == ACTION_EXIT_MENUITEM) 616 if (action == ACTION_EXIT_MENUITEM)
617 break; 617 break;
618 } 618 }
@@ -688,7 +688,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
688 if (type != MT_MENU) 688 if (type != MT_MENU)
689 { 689 {
690 if (menu_callback) 690 if (menu_callback)
691 menu_callback(ACTION_EXIT_MENUITEM,temp); 691 menu_callback(ACTION_EXIT_MENUITEM, temp, &lists);
692 } 692 }
693 if (current_submenus_menu != menu) 693 if (current_submenus_menu != menu)
694 init_menu_lists(menu,&lists,selected,true,vps); 694 init_menu_lists(menu,&lists,selected,true,vps);
@@ -730,9 +730,11 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
730 if (redraw_lists && !done) 730 if (redraw_lists && !done)
731 { 731 {
732 if (menu_callback) 732 if (menu_callback)
733 menu_callback(ACTION_REDRAW, menu); 733 if (menu_callback(ACTION_REDRAW, menu, &lists) == ACTION_REDRAW)
734 gui_synclist_draw(&lists); 734 {
735 gui_synclist_speak_item(&lists); 735 gui_synclist_draw(&lists);
736 gui_synclist_speak_item(&lists);
737 }
736 } 738 }
737 } 739 }
738 740