summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-03-05 13:36:00 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-03-05 13:36:00 +0000
commit6bb473d291b27a41cb9336f6151f3f75cd993ada (patch)
tree4c49bfc2d64d2066c3ffd886c03201cba51364bb
parent1b2a1c8fe71e27c53c284535997cb07ac8e49536 (diff)
downloadrockbox-6bb473d291b27a41cb9336f6151f3f75cd993ada.zip
rockbox-6bb473d291b27a41cb9336f6151f3f75cd993ada.tar.gz
rockbox-6bb473d291b27a41cb9336f6151f3f75cd993ada.tar.bz2
rockbox-6bb473d291b27a41cb9336f6151f3f75cd993ada.tar.xz
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
-rw-r--r--apps/root_menu.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/apps/root_menu.c b/apps/root_menu.c
index 4f279c9..cb84033 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)