summaryrefslogtreecommitdiff
path: root/apps/gui/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/list.c')
-rw-r--r--apps/gui/list.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/apps/gui/list.c b/apps/gui/list.c
index 70b04c4313..61738fd454 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -550,6 +550,7 @@ static void gui_synclist_scroll_left(struct gui_synclist * lists)
550} 550}
551#endif /* HAVE_LCD_BITMAP */ 551#endif /* HAVE_LCD_BITMAP */
552 552
553
553bool gui_synclist_do_button(struct gui_synclist * lists, 554bool gui_synclist_do_button(struct gui_synclist * lists,
554 int *actionptr, enum list_wrap wrap) 555 int *actionptr, enum list_wrap wrap)
555{ 556{
@@ -563,32 +564,38 @@ bool gui_synclist_do_button(struct gui_synclist * lists,
563#else 564#else
564 static int next_item_modifier = 1; 565 static int next_item_modifier = 1;
565 static int last_accel_tick = 0; 566 static int last_accel_tick = 0;
566 if (global_settings.list_accel_start_delay)
567 {
568 int start_delay = global_settings.list_accel_start_delay * (HZ/2);
569 int accel_wait = global_settings.list_accel_wait * HZ/2;
570 567
571 if (get_action_statuscode(NULL)&ACTION_REPEAT) 568 if (action != ACTION_TOUCHSCREEN)
569 {
570 if (global_settings.list_accel_start_delay)
572 { 571 {
573 if (!last_accel_tick) 572 int start_delay = global_settings.list_accel_start_delay * (HZ/2);
574 last_accel_tick = current_tick + start_delay; 573 int accel_wait = global_settings.list_accel_wait * HZ/2;
575 else if (TIME_AFTER(current_tick, last_accel_tick + accel_wait)) 574
575 if (get_action_statuscode(NULL)&ACTION_REPEAT)
576 { 576 {
577 last_accel_tick = current_tick; 577 if (!last_accel_tick)
578 next_item_modifier++; 578 last_accel_tick = current_tick + start_delay;
579 else if (TIME_AFTER(current_tick, last_accel_tick + accel_wait))
580 {
581 last_accel_tick = current_tick;
582 next_item_modifier++;
583 }
584 }
585 else if (last_accel_tick)
586 {
587 next_item_modifier = 1;
588 last_accel_tick = 0;
579 } 589 }
580 }
581 else if (last_accel_tick)
582 {
583 next_item_modifier = 1;
584 last_accel_tick = 0;
585 } 590 }
586 } 591 }
587#endif 592#endif
588
589#if defined(HAVE_TOUCHSCREEN) 593#if defined(HAVE_TOUCHSCREEN)
590 if (action == ACTION_TOUCHSCREEN) 594 if (action == ACTION_TOUCHSCREEN)
591 action = *actionptr = gui_synclist_do_touchscreen(lists); 595 action = *actionptr = gui_synclist_do_touchscreen(lists);
596 else if (action > ACTION_TOUCHSCREEN_MODE)
597 /* cancel kinetic if we got a normal button event */
598 _gui_synclist_stop_kinetic_scrolling();
592#endif 599#endif
593 600
594 switch (wrap) 601 switch (wrap)