diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp index 56f47cfe4..fda49bb51 100644 --- a/Marlin/src/lcd/menu/menu.cpp +++ b/Marlin/src/lcd/menu/menu.cpp @@ -88,7 +88,7 @@ void MarlinUI::save_previous_screen() { screen_history[screen_history_depth++] = { currentScreen, encoderPosition, encoderTopLine, screen_items }; } -void MarlinUI::goto_previous_screen( +void MarlinUI::_goto_previous_screen( #if ENABLED(TURBO_BACK_MENU_ITEM) const bool is_back/*=false*/ #endif diff --git a/Marlin/src/lcd/menu/menu.h b/Marlin/src/lcd/menu/menu.h index aa8e699e7..e8feeee9d 100644 --- a/Marlin/src/lcd/menu/menu.h +++ b/Marlin/src/lcd/menu/menu.h @@ -110,13 +110,7 @@ class MenuItem_back : public MenuItemBase { FORCE_INLINE static void draw(const bool sel, const uint8_t row, PGM_P const pstr) { _draw(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]); } - static inline void action(PGM_P const=nullptr) { - ui.goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - true - #endif - ); - } + static inline void action(PGM_P const=nullptr) { ui.go_back(); } }; // SUBMENU(PLABEL, screen_handler) diff --git a/Marlin/src/lcd/menu/menu_info.cpp b/Marlin/src/lcd/menu/menu_info.cpp index 5ef6bbfc4..e7b4dbe7c 100644 --- a/Marlin/src/lcd/menu/menu_info.cpp +++ b/Marlin/src/lcd/menu/menu_info.cpp @@ -45,11 +45,7 @@ // About Printer > Printer Stats // void menu_info_stats() { - if (ui.use_click()) return ui.goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - true - #endif - ); + if (ui.use_click()) return ui.go_back(); char buffer[21]; // For macro usage @@ -97,11 +93,7 @@ // About Printer > Thermistors // void menu_info_thermistors() { - if (ui.use_click()) return ui.goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - true - #endif - ); + if (ui.use_click()) return ui.go_back(); char buffer[21]; // For macro usage @@ -218,11 +210,7 @@ void menu_info_thermistors() { // About Printer > Board Info // void menu_info_board() { - if (ui.use_click()) return ui.goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - true - #endif - ); + if (ui.use_click()) return ui.go_back(); char buffer[21]; // For macro usage @@ -257,11 +245,7 @@ void menu_info_board() { #else void menu_info_printer() { - if (ui.use_click()) return ui.goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - true - #endif - ); + if (ui.use_click()) return ui.go_back(); START_SCREEN(); STATIC_ITEM_P(PSTR(MSG_MARLIN), SS_CENTER|SS_INVERT); // Marlin STATIC_ITEM_P(PSTR(SHORT_BUILD_VERSION)); // x.x.x-Branch diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h index 9af9be419..d8f9e43a9 100644 --- a/Marlin/src/lcd/ultralcd.h +++ b/Marlin/src/lcd/ultralcd.h @@ -463,16 +463,16 @@ public: static screenFunc_t currentScreen; static void goto_screen(const screenFunc_t screen, const uint16_t encoder=0, const uint8_t top=0, const uint8_t items=0); static void save_previous_screen(); - static void goto_previous_screen( - #if ENABLED(TURBO_BACK_MENU_ITEM) - const bool is_back - #endif - ); + // goto_previous_screen and go_back may also be used as menu item callbacks #if ENABLED(TURBO_BACK_MENU_ITEM) - // Various menu items require a "void (*)()" to point to - // this function so a default argument *won't* work - static inline void goto_previous_screen() { goto_previous_screen(false); } + static void _goto_previous_screen(const bool is_back); + static inline void goto_previous_screen() { _goto_previous_screen(false); } + static inline void go_back() { _goto_previous_screen(true); } + #else + static void _goto_previous_screen(); + FORCE_INLINE static void goto_previous_screen() { _goto_previous_screen(); } + FORCE_INLINE static void go_back() { _goto_previous_screen(); } #endif static void return_to_status();