Browse Source

fix the knob long-press causing hang in modal dialogs

DRracer 4 years ago
parent
commit
f3c3526aa5
2 changed files with 5 additions and 7 deletions
  1. 1 2
      Firmware/lcd.cpp
  2. 4 5
      Firmware/ultralcd.cpp

+ 1 - 2
Firmware/lcd.cpp

@@ -761,8 +761,7 @@ void lcd_buttons_update(void)
             //else if (menu_menu == lcd_move_z) lcd_quick_feedback();
             //lcd_button_pressed is set back to false via lcd_quick_feedback function
         }
-        else
-            lcd_long_press_active = 0;
+        lcd_long_press_active = 0;
     }
 
 	lcd_buttons = newbutton;

+ 4 - 5
Firmware/ultralcd.cpp

@@ -8617,7 +8617,6 @@ void menu_lcd_longpress_func(void)
 
     // explicitely listed menus which are allowed to rise the move-z or live-adj-z functions
     // The lists are not the same for both functions, so first decide which function is to be performed
-    // @@TODO - handle full-screen modal dialogs safely - i.e. they should not hang the printer while doing long press
     if ( (moves_planned() || IS_SD_PRINTING || is_usb_printing )){ // long press as live-adj-z
         if(( current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU ) // only allow live-adj-z up to 2mm of print height
         && ( menu_menu == lcd_status_screen // and in listed menus...
@@ -8630,8 +8629,8 @@ void menu_lcd_longpress_func(void)
             menu_submenu(lcd_babystep_z);
         } else {
             // otherwise consume the long press as normal click
-            // consume the loreturns to sheet menu
-            menu_back();
+            if( menu_menu != lcd_status_screen )
+                menu_back();
         }
     } else { // long press as move-z
         if(menu_menu == lcd_status_screen
@@ -8649,8 +8648,8 @@ void menu_lcd_longpress_func(void)
             menu_submenu(lcd_move_z);
         } else {
             // otherwise consume the long press as normal click
-            // consume the loreturns to sheet menu
-            menu_back();
+            if( menu_menu != lcd_status_screen )
+                menu_back();
         }
     }
 }