summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2013-03-27 22:43:40 +1100
committerJonathan Gordon <rockbox@jdgordon.info>2013-03-28 22:32:57 +1100
commit83d3f1d3f65e4115bc5a8348d126b6ab7cbbcf64 (patch)
tree48172c3cce071f1d099146cb9324f54ab1e66b13
parentddf55200dc89b2917c6c541546b64c2ece73cd5b (diff)
downloadrockbox-83d3f1d.tar.gz
rockbox-83d3f1d.tar.bz2
rockbox-83d3f1d.zip
simplelist: Fix simplelist_set_line_count() so it actually sets the count
(hopefully) Fixes FS#12838 Change-Id: I932184afaf7b65121a0c459cd03c8482e3bad22b
-rw-r--r--apps/debug_menu.c26
-rw-r--r--apps/gui/list.c8
2 files changed, 32 insertions, 2 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 265d8988b5..59a58212ad 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1838,6 +1838,31 @@ static bool dbg_save_roms(void)
}
#endif /* CPU */
+static int radio_callback(int btn, struct gui_synclist *lists)
+{
+ (void)lists;
+ if (btn == ACTION_STD_CANCEL)
+ return btn;
+ simplelist_set_line_count(1);
+ simplelist_addline("test one");
+ simplelist_addline("test two");
+ simplelist_addline("test dsaf");
+ simplelist_addline("test asdfsad");
+ simplelist_addline("-------------");
+ return ACTION_REDRAW;
+}
+static bool dbg_fm_radio(void)
+{
+ struct simplelist_info info;
+ info.scroll_all = true;
+ simplelist_info_init(&info, "FM Radio", 1, NULL);
+ simplelist_set_line_count(0);
+ simplelist_addline("HW detected: %s", "no");
+
+ info.action_callback = radio_callback;
+ info.hide_selection = true;
+ return simplelist_show_list(&info);
+}
#ifndef SIMULATOR
#if CONFIG_TUNER
@@ -2324,6 +2349,7 @@ static const struct {
{ "FM Radio", dbg_fm_radio },
#endif
#endif
+ { "TEST HERE", dbg_fm_radio},
#if defined(HAVE_EEPROM) && !defined(HAVE_EEPROM_SETTINGS)
{ "Write back EEPROM", dbg_write_eeprom },
#endif
diff --git a/apps/gui/list.c b/apps/gui/list.c
index cc43843e46..27032378c3 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -843,8 +843,12 @@ void simplelist_set_line_count(int lines)
simplelist_line_remaining = sizeof(simplelist_buffer);
simplelist_line_count = 0;
}
- else if (lines >= SIMPLELIST_MAX_LINES)
- simplelist_line_count = SIMPLELIST_MAX_LINES;
+ else if (lines < simplelist_line_count) {
+ char *end = simplelist_text[lines];
+ simplelist_line_pos = end - simplelist_buffer;
+ simplelist_line_remaining = sizeof(simplelist_buffer) - simplelist_line_pos;
+ simplelist_line_count = lines;
+ }
}
/* get the current amount of lines shown */
int simplelist_get_line_count(void)