|
@@ -258,6 +258,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
258
|
258
|
|
259
|
259
|
#define START_MENU() \
|
260
|
260
|
START_SCREEN_OR_MENU(1); \
|
|
261
|
+ screen_changed = false; \
|
261
|
262
|
NOMORE(encoderTopLine, encoderLine); \
|
262
|
263
|
if (encoderLine >= encoderTopLine + LCD_HEIGHT - TALL_FONT_CORRECTION) { \
|
263
|
264
|
encoderTopLine = encoderLine - (LCD_HEIGHT - TALL_FONT_CORRECTION - 1); \
|
|
@@ -296,7 +297,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
296
|
297
|
|
297
|
298
|
#define _MENU_ITEM_PART_2(TYPE, ...) \
|
298
|
299
|
menu_action_ ## TYPE(__VA_ARGS__); \
|
299
|
|
- return; \
|
|
300
|
+ if (screen_changed) return; \
|
300
|
301
|
} \
|
301
|
302
|
} \
|
302
|
303
|
++_thisItemNr
|
|
@@ -383,6 +384,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
383
|
384
|
|
384
|
385
|
menuPosition screen_history[10];
|
385
|
386
|
uint8_t screen_history_depth = 0;
|
|
387
|
+ bool screen_changed;
|
386
|
388
|
|
387
|
389
|
// LCD and menu clicks
|
388
|
390
|
bool lcd_clicked, wait_for_unclick, defer_return_to_status;
|
|
@@ -410,6 +412,7 @@ uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to
|
410
|
412
|
lcd_set_custom_characters(screen == lcd_status_screen);
|
411
|
413
|
#endif
|
412
|
414
|
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
|
|
415
|
+ screen_changed = true;
|
413
|
416
|
}
|
414
|
417
|
}
|
415
|
418
|
|