diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index a215368551c53ab026a7b8f464259d815db12258..1300196667714be51d3f5499e44993651c3d7d96 100755
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -4431,41 +4431,49 @@ inline void gcode_G92() {
 
     #endif
 
+    #if ENABLED(EMERGENCY_PARSER)
+      wait_for_user = true;
+    #endif
+
+    KEEPALIVE_STATE(PAUSED_FOR_USER);
+
     stepper.synchronize();
     refresh_cmd_timeout();
 
     #if ENABLED(ULTIPANEL)
 
+      #if ENABLED(EMERGENCY_PARSER)
+        #define M1_WAIT_CONDITION (!lcd_clicked() && wait_for_user)
+      #else
+        #define M1_WAIT_CONDITION !lcd_clicked()
+      #endif
+
       if (codenum > 0) {
         codenum += previous_cmd_ms;  // wait until this time for a click
-        KEEPALIVE_STATE(PAUSED_FOR_USER);
-        while (PENDING(millis(), codenum) && !lcd_clicked()) idle();
+        while (PENDING(millis(), codenum) && M1_WAIT_CONDITION) idle();
         lcd_ignore_click(false);
       }
       else if (lcd_detected()) {
-        KEEPALIVE_STATE(PAUSED_FOR_USER);
-        while (!lcd_clicked()) idle();
+        while (M1_WAIT_CONDITION) idle();
       }
-      else return;
+      else goto ExitM1;
 
-      if (IS_SD_PRINTING)
-        LCD_MESSAGEPGM(MSG_RESUMING);
-      else
-        LCD_MESSAGEPGM(WELCOME_MSG);
+      IS_SD_PRINTING ? LCD_MESSAGEPGM(MSG_RESUMING) : LCD_MESSAGEPGM(WELCOME_MSG);
 
     #else
 
-      KEEPALIVE_STATE(PAUSED_FOR_USER);
-      wait_for_user = true;
-
       if (codenum > 0) {
         codenum += previous_cmd_ms;  // wait until this time for an M108
         while (PENDING(millis(), codenum) && wait_for_user) idle();
       }
       else while (wait_for_user) idle();
 
-      wait_for_user = false;
+    #endif
 
+ExitM1:
+
+    #if ENABLED(EMERGENCY_PARSER)
+      wait_for_user = false;
     #endif
 
     KEEPALIVE_STATE(IN_HANDLER);