diff options
-rw-r--r-- | apps/menu.c | 14 |
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: |