From 6bb473d291b27a41cb9336f6151f3f75cd993ada Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Mon, 5 Mar 2007 13:36:00 +0000 Subject: Always try to select the last screen when enetering the Rockbox Menu git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12623 a1c6a512-1295-4272-9138-f99709370657 --- apps/root_menu.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'apps/root_menu.c') diff --git a/apps/root_menu.c b/apps/root_menu.c index 4f279c94a6..cb84033b6b 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -298,6 +298,19 @@ int item_callback(int action, const struct menu_item_ex *this_item) } return action; } +static int get_selection(int last_screen) +{ + unsigned int i; + for(i=0; i< sizeof(root_menu__)/sizeof(*root_menu__); i++) + { + if ((root_menu__[i]->flags&MT_RETURN_VALUE) && + (root_menu__[i]->value == last_screen)) + { + return i; + } + } + return 0; +} void root_menu(void) { @@ -311,24 +324,12 @@ void root_menu(void) ret_val = (int)global_status.last_screen; else ret_val = global_settings.start_in_screen - 2; - /* try to select the start item if its not the menu */ - if (ret_val != GO_TO_ROOT) - { - unsigned int i; - for(i=0; i< sizeof(root_menu__)/sizeof(*root_menu__) - 1; i++) - { - if (root_menu__[i]->value == ret_val) - { - selected = i; - break; - } - } - } while (true) { switch (ret_val) { case GO_TO_ROOT: + selected = get_selection(last_screen); ret_val = do_menu(&root_menu_, &selected); /* As long as MENU_ATTACHED_USB == GO_TO_ROOT this works */ if (ret_val == MENU_ATTACHED_USB) -- cgit v1.2.3