Selaa lähdekoodia

Only exit menu handler when the screen changes

Scott Lahteine 8 vuotta sitten
vanhempi
commit
13ea43cc8d
1 muutettua tiedostoa jossa 4 lisäystä ja 1 poistoa
  1. 4
    1
      Marlin/ultralcd.cpp

+ 4
- 1
Marlin/ultralcd.cpp Näytä tiedosto

@@ -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
 

Loading…
Peruuta
Tallenna