summaryrefslogtreecommitdiff
path: root/apps/gui/bitmap/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/bitmap/list.c')
-rw-r--r--apps/gui/bitmap/list.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c
index d892bff22b..1af2dfc8ae 100644
--- a/apps/gui/bitmap/list.c
+++ b/apps/gui/bitmap/list.c
@@ -47,6 +47,14 @@
47/* these are static to make scrolling work */ 47/* these are static to make scrolling work */
48static struct viewport list_text[NB_SCREENS], title_text[NB_SCREENS]; 48static struct viewport list_text[NB_SCREENS], title_text[NB_SCREENS];
49 49
50#ifdef HAVE_TOUCHSCREEN
51static enum {
52 SCROLL_NONE, /* no scrolling */
53 SCROLL_BAR, /* scroll by using the scrollbar */
54 SCROLL_SWIPE, /* scroll by wiping over the screen */
55} scroll_mode;
56#endif
57
50int gui_list_get_item_offset(struct gui_synclist * gui_list, int item_width, 58int gui_list_get_item_offset(struct gui_synclist * gui_list, int item_width,
51 int text_pos, struct screen * display, 59 int text_pos, struct screen * display,
52 struct viewport *vp); 60 struct viewport *vp);
@@ -232,7 +240,12 @@ void list_draw(struct screen *display, struct gui_synclist *list)
232 } 240 }
233#endif 241#endif
234 /* draw the selected line */ 242 /* draw the selected line */
235 if(!list->hide_selection && i >= list->selected_item 243 if(
244#ifdef HAVE_TOUCHSCREEN
245 /* don't draw it during scrolling */
246 scroll_mode == SCROLL_NONE &&
247#endif
248 i >= list->selected_item
236 && i < list->selected_item + list->selected_size 249 && i < list->selected_item + list->selected_size
237 && list->show_selection_marker) 250 && list->show_selection_marker)
238 {/* The selected item must be displayed scrolling */ 251 {/* The selected item must be displayed scrolling */
@@ -311,11 +324,6 @@ void list_draw(struct screen *display, struct gui_synclist *list)
311 324
312#if defined(HAVE_TOUCHSCREEN) 325#if defined(HAVE_TOUCHSCREEN)
313/* This needs to be fixed if we ever get more than 1 touchscreen on a target. */ 326/* This needs to be fixed if we ever get more than 1 touchscreen on a target. */
314static enum {
315 SCROLL_NONE, /* no scrolling */
316 SCROLL_BAR, /* scroll by using the scrollbar */
317 SCROLL_SWIPE, /* scroll by wiping over the screen */
318} scroll_mode;
319 327
320static bool released = false; 328static bool released = false;
321 329
@@ -390,10 +398,7 @@ unsigned gui_synclist_do_touchscreen(struct gui_synclist * gui_list)
390 int line, list_width = list_text_vp->width; 398 int line, list_width = list_text_vp->width;
391 399
392 released = (button&BUTTON_REL) != 0; 400 released = (button&BUTTON_REL) != 0;
393 gui_list->hide_selection = (scroll_mode != SCROLL_NONE);
394
395 401
396
397 if (global_settings.scrollbar == SCROLLBAR_RIGHT) 402 if (global_settings.scrollbar == SCROLLBAR_RIGHT)
398 list_width += SCROLLBAR_WIDTH; 403 list_width += SCROLLBAR_WIDTH;
399 404
@@ -511,8 +516,6 @@ unsigned gui_synclist_do_touchscreen(struct gui_synclist * gui_list)
511 { 516 {
512 scroll_mode = SCROLL_NONE; 517 scroll_mode = SCROLL_NONE;
513 redraw = true; 518 redraw = true;
514 /* don't draw the selection during scrolling */
515 gui_list->hide_selection = false;
516 } 519 }
517 520
518 /* select current item */ 521 /* select current item */