From 902d5b0f8ba2f46f30fa063b7d2ab8b6193339cc Mon Sep 17 00:00:00 2001
From: Marcio Teixeira <marcio@alephobjects.com>
Date: Wed, 12 Dec 2018 16:21:37 -0700
Subject: [PATCH] Allow ExtUI to use LCD_SET_PROGRESS_MANUALLY (#12628)

---
 Marlin/src/gcode/gcode.cpp   |  2 +-
 Marlin/src/gcode/gcode.h     |  2 +-
 Marlin/src/gcode/lcd/M73.cpp |  4 ++--
 Marlin/src/inc/SanityCheck.h |  4 ++--
 Marlin/src/lcd/ultralcd.cpp  |  8 ++++----
 Marlin/src/lcd/ultralcd.h    | 20 ++++++++++----------
 6 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 973d8713ea..3b60486721 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -336,7 +336,7 @@ void GcodeSuite::process_parsed_command(
         case 49: M49(); break;                                    // M49: Turn on or off G26 debug flag for verbose output
       #endif
 
-      #if ENABLED(ULTRA_LCD) && ENABLED(LCD_SET_PROGRESS_MANUALLY)
+      #if ENABLED(LCD_SET_PROGRESS_MANUALLY) && (ENABLED(ULTRA_LCD) || ENABLED(EXTENSIBLE_UI))
         case 73: M73(); break;                                    // M73: Set progress percentage (for display on LCD)
       #endif
 
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 07582bc351..540e0208a6 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -488,7 +488,7 @@ private:
     static void M49();
   #endif
 
-  #if ENABLED(ULTRA_LCD) && ENABLED(LCD_SET_PROGRESS_MANUALLY)
+  #if ENABLED(LCD_SET_PROGRESS_MANUALLY) && (ENABLED(ULTRA_LCD) || ENABLED(EXTENSIBLE_UI))
     static void M73();
   #endif
 
diff --git a/Marlin/src/gcode/lcd/M73.cpp b/Marlin/src/gcode/lcd/M73.cpp
index 78697aecf3..7f1ebf3ea1 100644
--- a/Marlin/src/gcode/lcd/M73.cpp
+++ b/Marlin/src/gcode/lcd/M73.cpp
@@ -22,7 +22,7 @@
 
 #include "../../inc/MarlinConfig.h"
 
-#if ENABLED(ULTRA_LCD) && ENABLED(LCD_SET_PROGRESS_MANUALLY)
+#if ENABLED(LCD_SET_PROGRESS_MANUALLY) && (ENABLED(EXTENSIBLE_UI) || ENABLED(ULTRA_LCD))
 
 #include "../gcode.h"
 #include "../../lcd/ultralcd.h"
@@ -42,4 +42,4 @@ void GcodeSuite::M73() {
     ui.set_progress(parser.value_byte());
 }
 
-#endif // ULTRA_LCD && LCD_SET_PROGRESS_MANUALLY
+#endif // LCD_SET_PROGRESS_MANUALLY && (ENABLED(EXTENSIBLE_UI) || ENABLED(ULTRA_LCD))
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index 85aa502ad1..8869d99c80 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -500,8 +500,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
   #elif PROGRESS_MSG_EXPIRE < 0
     #error "PROGRESS_MSG_EXPIRE must be greater than or equal to 0."
   #endif
-#elif ENABLED(LCD_SET_PROGRESS_MANUALLY) && !HAS_GRAPHICAL_LCD
-  #error "LCD_SET_PROGRESS_MANUALLY requires LCD_PROGRESS_BAR or Graphical LCD."
+#elif ENABLED(LCD_SET_PROGRESS_MANUALLY) && !HAS_GRAPHICAL_LCD && DISABLED(EXTENSIBLE_UI)
+  #error "LCD_SET_PROGRESS_MANUALLY requires LCD_PROGRESS_BAR, Graphical LCD, or EXTENSIBLE_UI."
 #endif
 
 /**
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index f5ba174df0..20eae21ea3 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -52,6 +52,10 @@
   char MarlinUI::status_message[MAX_MESSAGE_LENGTH + 1];
 #endif
 
+#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
+  uint8_t MarlinUI::progress_bar_percent; // = 0
+#endif
+
 #if HAS_SPI_LCD
 
 #if HAS_GRAPHICAL_LCD
@@ -102,10 +106,6 @@ uint8_t MarlinUI::lcd_status_update_delay = 1; // First update one loop delayed
   millis_t MarlinUI::next_filament_display; // = 0
 #endif
 
-#if ENABLED(LCD_SET_PROGRESS_MANUALLY)
-  uint8_t MarlinUI::progress_bar_percent; // = 0
-#endif
-
 millis_t next_button_update_ms;
 
 #if HAS_GRAPHICAL_LCD
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 54eb239b9d..77e001362c 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -271,6 +271,16 @@ public:
     static uint8_t status_message_level;      // Higher levels block lower levels
     static inline void reset_alert_level() { status_message_level = 0; }
 
+    #if HAS_PRINT_PROGRESS
+      #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
+        static uint8_t progress_bar_percent;
+        static void set_progress(const uint8_t progress) { progress_bar_percent = MIN(progress, 100); }
+      #endif
+      static uint8_t get_progress();
+    #else
+      static constexpr uint8_t get_progress() { return 0; }
+    #endif
+
     #if HAS_SPI_LCD
 
       static bool detected();
@@ -312,16 +322,6 @@ public:
       #endif
       static uint8_t lcd_status_update_delay;
 
-      #if HAS_PRINT_PROGRESS
-        #if ENABLED(LCD_SET_PROGRESS_MANUALLY)
-          static uint8_t progress_bar_percent;
-          static void set_progress(const uint8_t progress) { progress_bar_percent = MIN(progress, 100); }
-        #endif
-        static uint8_t get_progress();
-      #else
-        static constexpr uint8_t get_progress() { return 0; }
-      #endif
-
       #if HAS_LCD_CONTRAST
         static int16_t contrast;
         static void set_contrast(const int16_t value);
-- 
GitLab