summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/menu.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 9764828d5e..9ffdb92993 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -84,7 +84,8 @@ static void menu_draw(int m)
84{ 84{
85 int i = 0; 85 int i = 0;
86 86
87 lcd_clear_display(); 87 lcd_clear_display();
88 lcd_stop_scroll();
88#ifdef HAVE_LCD_BITMAP 89#ifdef HAVE_LCD_BITMAP
89 lcd_setmargins(0,0); 90 lcd_setmargins(0,0);
90 lcd_setfont(0); 91 lcd_setfont(0);
@@ -92,12 +93,14 @@ static void menu_draw(int m)
92 for (i = menus[m].top; 93 for (i = menus[m].top;
93 (i < menus[m].itemcount) && (i<menus[m].top+MENU_LINES); 94 (i < menus[m].itemcount) && (i<menus[m].top+MENU_LINES);
94 i++) { 95 i++) {
95 lcd_puts(1, i-menus[m].top, menus[m].items[i].desc); 96 if((menus[m].cursor - menus[m].top)==(i-menus[m].top))
97 lcd_puts_scroll(1, i-menus[m].top, menus[m].items[i].desc);
98 else
99 lcd_puts(1, i-menus[m].top, menus[m].items[i].desc);
96 } 100 }
97 101
98 /* place the cursor */ 102 /* place the cursor */
99 put_cursorxy(0, menus[m].cursor - menus[m].top, true); 103 put_cursorxy(0, menus[m].cursor - menus[m].top, true);
100
101 lcd_update(); 104 lcd_update();
102} 105}
103 106
@@ -111,6 +114,7 @@ static void put_cursor(int m, int target)
111 114
112 put_cursorxy(0, menus[m].cursor - menus[m].top, false); 115 put_cursorxy(0, menus[m].cursor - menus[m].top, false);
113 menus[m].cursor = target; 116 menus[m].cursor = target;
117 menu_draw(m);
114 118
115 if ( target < menus[m].top ) { 119 if ( target < menus[m].top ) {
116 menus[m].top--; 120 menus[m].top--;
@@ -167,6 +171,7 @@ void menu_run(int m)
167 case BUTTON_UP: 171 case BUTTON_UP:
168#else 172#else
169 case BUTTON_LEFT: 173 case BUTTON_LEFT:
174 case BUTTON_LEFT | BUTTON_REPEAT:
170#endif 175#endif
171 if (menus[m].cursor) { 176 if (menus[m].cursor) {
172 /* move up */ 177 /* move up */
@@ -178,6 +183,7 @@ void menu_run(int m)
178 case BUTTON_DOWN: 183 case BUTTON_DOWN:
179#else 184#else
180 case BUTTON_RIGHT: 185 case BUTTON_RIGHT:
186 case BUTTON_RIGHT | BUTTON_REPEAT:
181#endif 187#endif
182 if (menus[m].cursor < menus[m].itemcount-1) { 188 if (menus[m].cursor < menus[m].itemcount-1) {
183 /* move down */ 189 /* move down */
@@ -190,6 +196,7 @@ void menu_run(int m)
190#endif 196#endif
191 case BUTTON_PLAY: 197 case BUTTON_PLAY:
192 /* Erase current display state */ 198 /* Erase current display state */
199 lcd_stop_scroll();
193 lcd_clear_display(); 200 lcd_clear_display();
194 201
195 menus[m].items[menus[m].cursor].function(); 202 menus[m].items[menus[m].cursor].function();
@@ -205,6 +212,7 @@ void menu_run(int m)
205 case BUTTON_STOP: 212 case BUTTON_STOP:
206 case BUTTON_MENU: 213 case BUTTON_MENU:
207#endif 214#endif
215 lcd_stop_scroll();
208 return; 216 return;
209 217
210 default: 218 default: