From c7e64371c989925c74a5c2a13683f71bbbd6bdc7 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 19 Mar 2025 17:35:23 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20ProUI:=20pr?= =?UTF-8?q?e-calculate=20menu=20sizes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Marlin/src/lcd/e3v2/proui/dwin.cpp | 176 ++++++++++++++++++++++++----- 1 file changed, 149 insertions(+), 27 deletions(-) diff --git a/Marlin/src/lcd/e3v2/proui/dwin.cpp b/Marlin/src/lcd/e3v2/proui/dwin.cpp index cbf806a7c9..03f25b5010 100644 --- a/Marlin/src/lcd/e3v2/proui/dwin.cpp +++ b/Marlin/src/lcd/e3v2/proui/dwin.cpp @@ -3101,8 +3101,18 @@ frame_rect_t selrect(frame_rect_t) { } void drawPrepareMenu() { + constexpr uint8_t items = (3 + + COUNT_ENABLED(LCD_BED_TRAMMING) + + 2 + + TERN(MESH_BED_LEVELING, 1, ENABLED(HAS_BED_PROBE)) + + TERN(HAS_ZOFFSET_ITEM, ENABLED(HAS_BED_PROBE), ENABLED(BABYSTEPPING)) + + PREHEAT_COUNT + + 1 + + 2 * ALL(PROUI_TUNING_GRAPH, PROUI_ITEM_PLOT) + + 1 + ); checkkey = ID_Menu; - if (SET_MENU_R(prepareMenu, selrect({133, 1, 28, 13}), MSG_PREPARE, 12 + PREHEAT_COUNT)) { + if (SET_MENU_R(prepareMenu, selrect({133, 1, 28, 13}), MSG_PREPARE, items)) { BACK_ITEM(gotoMainMenu); MENU_ITEM(ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, drawFilamentManMenu); MENU_ITEM(ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, drawMoveMenu); @@ -3145,8 +3155,14 @@ void drawPrepareMenu() { #if ENABLED(LCD_BED_TRAMMING) void drawTrammingMenu() { + constexpr uint8_t items = (1 + + 2 * ALL(HAS_BED_PROBE, HAS_MESH) + + (DISABLED(HAS_BED_PROBE) && ENABLED(HAS_ZOFFSET_ITEM)) + + 4 + + ENABLED(BED_TRAMMING_INCLUDE_CENTER) + ); checkkey = ID_Menu; - if (SET_MENU(trammingMenu, MSG_BED_TRAMMING, 8)) { + if (SET_MENU(trammingMenu, MSG_BED_TRAMMING, items)) { BACK_ITEM(drawPrepareMenu); #if HAS_BED_PROBE && HAS_MESH MENU_ITEM(ICON_Tram, MSG_TRAMMING_WIZARD, onDrawMenuItem, trammingwizard); @@ -3168,8 +3184,13 @@ void drawPrepareMenu() { #endif // LCD_BED_TRAMMING void drawControlMenu() { + constexpr uint8_t items = (3 + + COUNT_ENABLED(CASE_LIGHT_MENU, LED_CONTROL_MENU) + + TERN0(EEPROM_SETTINGS, 3) + + 2 + ); checkkey = ID_Menu; - if (SET_MENU_R(controlMenu, selrect({103, 1, 28, 14}), MSG_CONTROL, 11)) { + if (SET_MENU_R(controlMenu, selrect({103, 1, 28, 14}), MSG_CONTROL, items)) { BACK_ITEM(gotoMainMenu); MENU_ITEM(ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, drawTemperatureMenu); MENU_ITEM(ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, drawMotionMenu); @@ -3198,8 +3219,20 @@ void drawControlMenu() { } void drawAdvancedSettingsMenu() { + constexpr uint8_t items = (1 + + COUNT_ENABLED(EEPROM_SETTINGS, HAS_MESH, HAS_BED_PROBE, HAS_HOME_OFFSET, HAS_TRINAMIC_CONFIG, HAS_ESDIAG, \ + HAS_LOCKSCREEN, EDITABLE_DISPLAY_TIMEOUT, SOUND_MENU_ITEM, POWER_LOSS_RECOVERY, HAS_GCODE_PREVIEW, \ + PROUI_MEDIASORT, BAUD_RATE_GCODE, HAS_CUSTOM_COLORS) + + 1 + + (ENABLED(PIDTEMP) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU)) + + ANY(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU) + + (ENABLED(PIDTEMPBED) && ANY(PID_AUTOTUNE_MENU, PID_EDIT_MENU)) + + TERN0(PRINTCOUNTER, 2) + + 1 + + TERN0(HAS_LCD_BRIGHTNESS, 2) + ); checkkey = ID_Menu; - if (SET_MENU(advancedSettingsMenu, MSG_ADVANCED_SETTINGS, 24)) { + if (SET_MENU(advancedSettingsMenu, MSG_ADVANCED_SETTINGS, items)) { BACK_ITEM(gotoMainMenu); #if ENABLED(EEPROM_SETTINGS) MENU_ITEM(ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM); @@ -3268,8 +3301,9 @@ void drawAdvancedSettingsMenu() { } void drawMoveMenu() { + constexpr uint8_t items = 2 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND); checkkey = ID_Menu; - if (SET_MENU_R(moveMenu, selrect({192, 1, 42, 14}), MSG_MOVE_AXIS, 6)) { + if (SET_MENU_R(moveMenu, selrect({192, 1, 42, 14}), MSG_MOVE_AXIS, items)) { BACK_ITEM(drawPrepareMenu); EDIT_ITEM(ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, setLiveMove, &enableLiveMove); #if HAS_X_AXIS @@ -3293,8 +3327,9 @@ void drawMoveMenu() { #if HAS_HOME_OFFSET void drawHomeOffsetMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS); checkkey = ID_Menu; - if (SET_MENU(homeOffsetMenu, MSG_SET_HOME_OFFSETS, 4)) { + if (SET_MENU(homeOffsetMenu, MSG_SET_HOME_OFFSETS, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x); @@ -3314,8 +3349,12 @@ void drawMoveMenu() { #if HAS_BED_PROBE void drawProbeSetMenu() { + constexpr uint8_t items = (1 + + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, Z_MIN_PROBE_REPEATABILITY_TEST) + + TERN0(BLTOUCH, 3 + ENABLED(HAS_BLTOUCH_HS_MODE)) + ); checkkey = ID_Menu; - if (SET_MENU(probeSettingsMenu, MSG_ZPROBE_SETTINGS, 9)) { + if (SET_MENU(probeSettingsMenu, MSG_ZPROBE_SETTINGS, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, setProbeOffsetX, &probe.offset.x); @@ -3344,8 +3383,12 @@ void drawMoveMenu() { #endif // HAS_BED_PROBE void drawFilSetMenu() { + constexpr uint8_t items = (1 + + COUNT_ENABLED(HAS_FILAMENT_SENSOR, HAS_FILAMENT_RUNOUT_DISTANCE, PREVENT_COLD_EXTRUSION, FWRETRACT) + + TERN0(CONFIGURE_FILAMENT_CHANGE, 2) + ); checkkey = ID_Menu; - if (SET_MENU(filSetMenu, MSG_FILAMENT_SET, 9)) { + if (SET_MENU(filSetMenu, MSG_FILAMENT_SET, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if HAS_FILAMENT_SENSOR EDIT_ITEM(ICON_Runout, MSG_RUNOUT_SENSOR, onDrawChkbMenu, setRunoutEnable, &runout.enabled); @@ -3384,8 +3427,12 @@ void drawFilSetMenu() { #if ENABLED(LED_CONTROL_MENU) void drawLedControlMenu() { + constexpr uint8_t items = (1 + + !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) + + ENABLED(HAS_COLOR_LEDS) * TERN(LED_COLOR_PRESETS, 8, 3 + ENABLED(HAS_WHITE_LED)), + ); checkkey = ID_Menu; - if (SET_MENU(ledControlMenu, MSG_LED_CONTROL, 10)) { + if (SET_MENU(ledControlMenu, MSG_LED_CONTROL, items)) { BACK_ITEM((currentMenu == tuneMenu) ? drawTuneMenu : drawControlMenu); #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL) EDIT_ITEM(ICON_LedControl, MSG_LIGHTS, onDrawChkbMenu, setLedStatus, &leds.lights_on); @@ -3416,8 +3463,21 @@ void drawFilSetMenu() { #endif // LED_CONTROL_MENU void drawTuneMenu() { + constexpr uint8_t items = (2 + + COUNT_ENABLED(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN) + + ALL(HAS_ZOFFSET_ITEM, BABYSTEPPING) + + 1 + + COUNT_ENABLED(ADVANCED_PAUSE_FEATURE, HAS_FILAMENT_SENSOR, PROUI_ITEM_PLR, FWRETRACT, PROUI_ITEM_JD, PROUI_ITEM_ADVK, HAS_LOCKSCREEN) + + TERN0(HAS_LCD_BRIGHTNESS, 2) + + ENABLED(EDITABLE_DISPLAY_TIMEOUT) + + 2 * ALL(PROUI_TUNING_GRAPH, PROUI_ITEM_PLOT) + + TERN(CASE_LIGHT_MENU, + 1 + COUNT_ENABLED(CASELIGHT_USES_BRIGHTNESS, LED_CONTROL_MENU), + ENABLED(LED_CONTROL_MENU) && DISABLED(CASE_LIGHT_USE_NEOPIXEL) + ) + ); checkkey = ID_Menu; - if (SET_MENU_R(tuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, 20)) { + if (SET_MENU_R(tuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, items)) { BACK_ITEM(gotoPrintProcess); EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage); #if HAS_HOTEND @@ -3518,8 +3578,9 @@ void drawTuneMenu() { #endif void drawInputShaping_menu() { + constexpr uint8_t items = 1 + 2 * COUNT_ENABLED(INPUT_SHAPING_X, INPUT_SHAPING_Y, INPUT_SHAPING_Z); checkkey = ID_Menu; - if (SET_MENU(inputShapingMenu, MSG_INPUT_SHAPING, 1 PLUS_TERN0(INPUT_SHAPING_X, 2) PLUS_TERN0(INPUT_SHAPING_Y, 2) PLUS_TERN0(INPUT_SHAPING_Z, 2))) { + if (SET_MENU(inputShapingMenu, MSG_INPUT_SHAPING, items)) { BACK_ITEM(drawMotionMenu); #if ENABLED(INPUT_SHAPING_X) MENU_ITEM(ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, setShapingXFreq); @@ -3553,8 +3614,22 @@ void drawTuneMenu() { #endif void drawTrinamicConfigMenu() { + constexpr uint8_t items = (1 + #if AXIS_IS_TMC(X) + + 1 + #endif + #if AXIS_IS_TMC(Y) + + 1 + #endif + #if AXIS_IS_TMC(Z) + + 1 + #endif + #if AXIS_IS_TMC(E0) + + 1 + #endif + ); checkkey = ID_Menu; - if (SET_MENU(trinamicConfigMenu, MSG_TMC_DRIVERS, 5)) { + if (SET_MENU(trinamicConfigMenu, MSG_TMC_DRIVERS, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if AXIS_IS_TMC(X) EDIT_ITEM(ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, setXTMCCurrent, &stepperX.val_mA); @@ -3574,8 +3649,12 @@ void drawTuneMenu() { #endif void drawMotionMenu() { + constexpr uint8_t items = (4 + + COUNT_ENABLED(EDITABLE_STEPS_PER_UNIT, EDITABLE_HOMING_FEEDRATE, LIN_ADVANCE, SHAPING_MENU, ADAPTIVE_STEP_SMOOTHING_TOGGLE) + + 2 + ); checkkey = ID_Menu; - if (SET_MENU_R(motionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, 11)) { + if (SET_MENU_R(motionMenu, selrect({1, 16, 28, 13}), MSG_MOTION, items)) { BACK_ITEM(drawControlMenu); MENU_ITEM(ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, drawMaxSpeedMenu); MENU_ITEM(ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, drawMaxAccelMenu); @@ -3620,8 +3699,13 @@ void drawMotionMenu() { #endif void drawFilamentManMenu() { + constexpr uint8_t items = (1 + + ENABLED(NOZZLE_PARK_FEATURE) + + TERN0(ADVANCED_PAUSE_FEATURE, 1 + ENABLED(HAS_PREHEAT)) + + TERN0(FILAMENT_LOAD_UNLOAD_GCODES, 2) + ); checkkey = ID_Menu; - if (SET_MENU(filamentMenu, MSG_FILAMENT_MAN, 6)) { + if (SET_MENU(filamentMenu, MSG_FILAMENT_MAN, items)) { BACK_ITEM(drawPrepareMenu); #if ENABLED(NOZZLE_PARK_FEATURE) MENU_ITEM(ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, parkHead); @@ -3681,16 +3765,21 @@ void drawFilamentManMenu() { #define _preheatMenu(N) \ void drawPreheat## N ##Menu() { \ + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN, EEPROM_SETTINGS); \ hmiValue.select = (N) - 1; \ - drawPreheatMenu(SET_MENU(preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5)); \ + drawPreheatMenu(SET_MENU(preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, items)); \ } REPEAT_1(PREHEAT_COUNT, _preheatMenu) #endif // HAS_PREHEAT void drawTemperatureMenu() { + constexpr uint8_t items = (1 + + COUNT_ENABLED(HAS_HOTEND, HAS_HEATED_BED, HAS_FAN) + + PREHEAT_COUNT + ); checkkey = ID_Menu; - if (SET_MENU_R(temperatureMenu, selrect({236, 2, 28, 12}), MSG_TEMPERATURE, 4 + PREHEAT_COUNT)) { + if (SET_MENU_R(temperatureMenu, selrect({236, 2, 28, 12}), MSG_TEMPERATURE, items)) { BACK_ITEM(drawControlMenu); #if HAS_HOTEND hotendTargetItem = EDIT_ITEM(ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend[0].target); @@ -3710,8 +3799,9 @@ void drawTemperatureMenu() { } void drawMaxSpeedMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND); checkkey = ID_Menu; - if (SET_MENU_R(maxSpeedMenu, selrect({1, 16, 28, 13}), MSG_MAX_SPEED, 5)) { + if (SET_MENU_R(maxSpeedMenu, selrect({1, 16, 28, 13}), MSG_MAX_SPEED, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, setMaxSpeedX, &planner.settings.max_feedrate_mm_s[X_AXIS]); @@ -3730,8 +3820,9 @@ void drawMaxSpeedMenu() { } void drawMaxAccelMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND); checkkey = ID_Menu; - if (SET_MENU_R(maxAccelMenu, selrect({1, 16, 28, 13}), MSG_AMAX_EN, 5)) { + if (SET_MENU_R(maxAccelMenu, selrect({1, 16, 28, 13}), MSG_AMAX_EN, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, setMaxAccelX, &planner.settings.max_acceleration_mm_per_s2[X_AXIS]); @@ -3752,8 +3843,9 @@ void drawMaxAccelMenu() { #if ENABLED(CLASSIC_JERK) void drawMaxJerkMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND); checkkey = ID_Menu; - if (SET_MENU_R(maxJerkMenu, selrect({1, 16, 28, 13}), MSG_JERK, 5)) { + if (SET_MENU_R(maxJerkMenu, selrect({1, 16, 28, 13}), MSG_JERK, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, setMaxJerkX, &planner.max_jerk.x); @@ -3776,8 +3868,9 @@ void drawMaxAccelMenu() { #if ENABLED(EDITABLE_STEPS_PER_UNIT) void drawStepsMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND); checkkey = ID_Menu; - if (SET_MENU_R(stepsMenu, selrect({1, 16, 28, 13}), MSG_STEPS_PER_MM, 5)) { + if (SET_MENU_R(stepsMenu, selrect({1, 16, 28, 13}), MSG_STEPS_PER_MM, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS EDIT_ITEM(ICON_StepX, MSG_A_STEPS, onDrawStepsX, setStepsX, &planner.settings.axis_steps_per_mm[X_AXIS]); @@ -3800,8 +3893,9 @@ void drawMaxAccelMenu() { #if ENABLED(EDITABLE_HOMING_FEEDRATE) void drawHomingFRMenu() { + constexpr uint8_t items = 1 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS); checkkey = ID_Menu; - if (SET_MENU(homingFRMenu, MSG_HOMING_FEEDRATE, 4)) { + if (SET_MENU(homingFRMenu, MSG_HOMING_FEEDRATE, items)) { BACK_ITEM(drawMotionMenu); #if HAS_X_AXIS uint16_t xhome = static_cast(homing_feedrate_mm_m.x); @@ -3921,8 +4015,12 @@ void drawMaxAccelMenu() { #endif void drawHotendMPCMenu() { + constexpr uint8_t items = (1 + + ENABLED(MPC_AUTOTUNE_MENU) + + TERN0(MPC_EDIT_MENU, 4 + ENABLED(MPC_INCLUDE_FAN)) + ); checkkey = ID_Menu; - if (SET_MENU_F(hotendMPCMenu, "MPC Settings", 7)) { + if (SET_MENU_F(hotendMPCMenu, "MPC Settings", items)) { MPC_t &mpc = thermalManager.temp_hotend[0].mpc; BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(MPC_AUTOTUNE_MENU) @@ -3991,8 +4089,13 @@ void drawMaxAccelMenu() { #endif void drawHotendPIDMenu() { + constexpr uint8_t items = (1 + + TERN0(PID_AUTOTUNE_MENU, 3) + + TERN0(PID_EDIT_MENU, 3) + + ENABLED(EEPROM_SETTINGS) + ); checkkey = ID_Menu; - if (SET_MENU_F(hotendPIDMenu, STR_HOTEND_PID " Settings", 8)) { + if (SET_MENU_F(hotendPIDMenu, STR_HOTEND_PID " Settings", items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PID_AUTOTUNE_MENU) MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, hotendPID); @@ -4021,8 +4124,13 @@ void drawMaxAccelMenu() { #endif void drawBedPIDMenu() { + constexpr uint8_t items = (1 + + TERN0(PID_AUTOTUNE_MENU, 3) + + TERN0(PID_EDIT_MENU, 3) + + ENABLED(EEPROM_SETTINGS) + ); checkkey = ID_Menu; - if (SET_MENU_F(bedPIDMenu, STR_BED_PID " Settings", 8)) { + if (SET_MENU_F(bedPIDMenu, STR_BED_PID " Settings", items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PID_AUTOTUNE_MENU) MENU_ITEM_F(ICON_PIDBed, STR_BED_PID, onDrawMenuItem,bedPID); @@ -4051,8 +4159,13 @@ void drawMaxAccelMenu() { #endif void drawChamberPIDMenu() { + constexpr uint8_t items = (1 + + TERN0(PID_AUTOTUNE_MENU, 3) + + TERN0(PID_EDIT_MENU, 3) + + ENABLED(EEPROM_SETTINGS) + ); checkkey = ID_Menu; - if (SET_MENU_F(chamberPIDMenu, STR_CHAMBER_PID " Settings", 8)) { + if (SET_MENU_F(chamberPIDMenu, STR_CHAMBER_PID " Settings", items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PID_AUTOTUNE_MENU) MENU_ITEM_F(ICON_PIDChamber, STR_CHAMBER_PID, onDrawMenuItem,chamberPID); @@ -4096,8 +4209,9 @@ void drawMaxAccelMenu() { #if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU) void drawHomingMenu() { + constexpr uint8_t items = 2 + COUNT_ENABLED(HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, Z_STEPPER_AUTO_ALIGN, MESH_BED_LEVELING); checkkey = ID_Menu; - if (SET_MENU(homingMenu, MSG_HOMING, 6)) { + if (SET_MENU(homingMenu, MSG_HOMING, items)) { BACK_ITEM(drawPrepareMenu); MENU_ITEM(ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, autoHome); #if HAS_X_AXIS @@ -4212,8 +4326,16 @@ void drawMaxAccelMenu() { #if HAS_MESH void drawMeshSetMenu() { + constexpr uint8_t items = (1 + + ENABLED(PREHEAT_BEFORE_LEVELING) + + 2 + + ENABLED(HAS_BED_PROBE) + + TERN0(AUTO_BED_LEVELING_UBL, 6) + + TERN0(PROUI_MESH_EDIT, 2) + + 1 + ); checkkey = ID_Menu; - if (SET_MENU(meshMenu, MSG_MESH_LEVELING, 14)) { + if (SET_MENU(meshMenu, MSG_MESH_LEVELING, items)) { BACK_ITEM(drawAdvancedSettingsMenu); #if ENABLED(PREHEAT_BEFORE_LEVELING) EDIT_ITEM(ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, setBedLevT, &hmiData.bedLevT);