summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/lcd-player.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/firmware/drivers/lcd-player.c b/firmware/drivers/lcd-player.c
index bbb157a94f..3344a7478a 100644
--- a/firmware/drivers/lcd-player.c
+++ b/firmware/drivers/lcd-player.c
@@ -626,12 +626,27 @@ static void scroll_thread(void)
626 int jumping_scroll=s->jump_scroll; 626 int jumping_scroll=s->jump_scroll;
627 update = true; 627 update = true;
628 if (s->jump_scroll) { 628 if (s->jump_scroll) {
629 s->offset+=s->jump_scroll_steps; 629
630 /* Find new position to start jump scroll by
631 * finding last white space within
632 * jump_scroll_steps */
633 int i;
634 o = s->offset = s->offset + s->jump_scroll_steps;
635 for (i = 0; i < s->jump_scroll_steps; i++, o--) {
636 if (o < s->textlen &&
637 ((0x20 <= s->text[o] && s->text[o] <= 0x2f) || s->text[o] == '_'))
638 {
639 s->offset = o;
640 break;
641 }
642 }
643
630 s->scroll_start_tick = current_tick + 644 s->scroll_start_tick = current_tick +
631 jump_scroll_delay; 645 jump_scroll_delay;
632 /* Eat space */ 646 /* Eat space */
633 while (s->offset < s->textlen && 647 while (s->offset < s->textlen &&
634 s->text[s->offset] == ' ') { 648 ((0x20 <= s->text[s->offset] && s->text[s->offset] <= 0x2f) ||
649 s->text[s->offset] == '_')) {
635 s->offset++; 650 s->offset++;
636 } 651 }
637 if (s->offset >= s->textlen) { 652 if (s->offset >= s->textlen) {
@@ -667,7 +682,7 @@ static void scroll_thread(void)
667 o=s->offset; 682 o=s->offset;
668 while (i<11) { 683 while (i<11) {
669 buffer[i++]=s->text[o++]; 684 buffer[i++]=s->text[o++];
670 if (o==s->textlen) 685 if (o==s->textlen /* || (jump_scroll && buffer[i-1] == ' ') */)
671 break; 686 break;
672 } 687 }
673 o=0; 688 o=0;