diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 93365aa2d1..18fc18a4e3 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -3406,6 +3406,8 @@ #define CUSTOM_USER_MENUS #endif #if ENABLED(CUSTOM_USER_MENUS) + #define CUSTOM_MENU_ONLY_IDLE // Only show custom menu when idle + #define CUSTOM_USER_MENU_CONFIRM // Show confirmation dialog on user menu actions #define CUSTOM_USER_MENU_TITLE "Tool Heads" #define USER_SCRIPT_DONE "M117 Tool Changed" #define USER_SCRIPT_AUDIBLE_FEEDBACK diff --git a/Marlin/src/lcd/menu/menu_custom.cpp b/Marlin/src/lcd/menu/menu_custom.cpp index 7c54ec6e26..2f9e5851a8 100644 --- a/Marlin/src/lcd/menu/menu_custom.cpp +++ b/Marlin/src/lcd/menu/menu_custom.cpp @@ -47,7 +47,20 @@ void menu_user() { START_MENU(); BACK_ITEM(MSG_MAIN); #define HAS_USER_ITEM(N) (defined(USER_DESC_##N) && defined(USER_GCODE_##N)) - #define USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); }); + #if ENABLED(CUSTOM_USER_MENU_CONFIRM) + #define USER_ITEM(N) SUBMENU_P(PSTR(USER_DESC_##N), []{ MenuItem_confirm::confirm_screen( \ + []{ \ + _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); \ + ui.goto_previous_screen(); \ + }, \ + ui.goto_previous_screen, \ + PSTR(USER_DESC_##N "?") \ + ); }); + + + #else + #define USER_ITEM(N) ACTION_ITEM_P(PSTR(USER_DESC_##N), []{ _lcd_user_gcode(PSTR(USER_GCODE_##N _DONE_SCRIPT)); }); + #endif #if HAS_USER_ITEM(1) USER_ITEM(1); #endif diff --git a/Marlin/src/lcd/menu/menu_main.cpp b/Marlin/src/lcd/menu/menu_main.cpp index b7cd549e6b..ee66034de2 100644 --- a/Marlin/src/lcd/menu/menu_main.cpp +++ b/Marlin/src/lcd/menu/menu_main.cpp @@ -202,7 +202,10 @@ void menu_main() { #if ENABLED(CUSTOM_USER_MENUS) #ifdef CUSTOM_USER_MENU_TITLE - SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user); + #if ENABLED(CUSTOM_MENU_ONLY_IDLE) + if(!busy) + #endif + SUBMENU_P(PSTR(CUSTOM_USER_MENU_TITLE), menu_user); #else SUBMENU(MSG_USER_MENU, menu_user); #endif