summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter D'Hoye <peter.dhoye@gmail.com>2008-01-21 22:28:25 +0000
committerPeter D'Hoye <peter.dhoye@gmail.com>2008-01-21 22:28:25 +0000
commitc4c678ff1a66c99b5484341dccded3bf1873912d (patch)
tree1d183cfbcd9d3fab799c59b1074e3255b31fb7f9
parent343fb725016e6e4d2b9e5ed8e95f4a4909e94e14 (diff)
downloadrockbox-c4c678ff1a66c99b5484341dccded3bf1873912d.zip
rockbox-c4c678ff1a66c99b5484341dccded3bf1873912d.tar.gz
rockbox-c4c678ff1a66c99b5484341dccded3bf1873912d.tar.bz2
rockbox-c4c678ff1a66c99b5484341dccded3bf1873912d.tar.xz
Accept FS #8490 by Vuong Minh Hiep: fix wrong selection in multi-line lists
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16135 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/list.c16
-rw-r--r--docs/CREDITS1
2 files changed, 7 insertions, 10 deletions
diff --git a/apps/gui/list.c b/apps/gui/list.c
index 5ae400e..cfb1e7c 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -550,26 +550,23 @@ void gui_synclist_select_item(struct gui_synclist * gui_list, int item_number)
static void gui_list_select_at_offset(struct gui_synclist * gui_list,
int offset)
{
- int new_selection = gui_list->selected_item + offset;
+ int new_selection;
if (gui_list->selected_size > 1)
{
offset *= gui_list->selected_size;
/* always select the first item of multi-line lists */
offset -= offset%gui_list->selected_size;
}
+ new_selection = gui_list->selected_item + offset;
if (new_selection >= gui_list->nb_items)
{
- if (gui_list->limit_scroll)
- gui_list->selected_item = gui_list->nb_items - 1;
- else
- gui_list->selected_item = new_selection - gui_list->nb_items;
+ gui_list->selected_item = gui_list->limit_scroll ?
+ gui_list->nb_items - gui_list->selected_size : 0;
}
else if (new_selection < 0)
{
- if (gui_list->limit_scroll)
- gui_list->selected_item = 0;
- else
- gui_list->selected_item = new_selection + gui_list->nb_items;
+ gui_list->selected_item = gui_list->limit_scroll ?
+ 0 : gui_list->nb_items - gui_list->selected_size;
}
else if (gui_list->show_selection_marker == false)
{
@@ -599,7 +596,6 @@ static void gui_list_select_at_offset(struct gui_synclist * gui_list,
}
else gui_list->selected_item += offset;
gui_synclist_select_item(gui_list, gui_list->selected_item);
-
}
/*
diff --git a/docs/CREDITS b/docs/CREDITS
index 549b446..24d58e4 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -366,6 +366,7 @@ Thomas Martitz
Prakarn Sahasoontornvute
George Tamplaru
Apoorva Mahajan
+Vuong Minh Hiep
The libmad team
The wavpack team