@@ -3101,8 +3101,18 @@ frame_rect_t selrect(frame_rect_t) {
31013101}
31023102
31033103void drawPrepareMenu () {
3104+ constexpr uint8_t items = (3
3105+ + COUNT_ENABLED (LCD_BED_TRAMMING)
3106+ + 2
3107+ + TERN (MESH_BED_LEVELING, 1 , ENABLED (HAS_BED_PROBE))
3108+ + TERN (HAS_ZOFFSET_ITEM, ENABLED (HAS_BED_PROBE), ENABLED (BABYSTEPPING))
3109+ + PREHEAT_COUNT
3110+ + 1
3111+ + 2 * ALL (PROUI_TUNING_GRAPH, PROUI_ITEM_PLOT)
3112+ + 1
3113+ );
31043114 checkkey = ID_Menu;
3105- if (SET_MENU_R (prepareMenu, selrect ({133 , 1 , 28 , 13 }), MSG_PREPARE, 12 + PREHEAT_COUNT )) {
3115+ if (SET_MENU_R (prepareMenu, selrect ({133 , 1 , 28 , 13 }), MSG_PREPARE, items )) {
31063116 BACK_ITEM (gotoMainMenu);
31073117 MENU_ITEM (ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, drawFilamentManMenu);
31083118 MENU_ITEM (ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, drawMoveMenu);
@@ -3145,8 +3155,14 @@ void drawPrepareMenu() {
31453155#if ENABLED(LCD_BED_TRAMMING)
31463156
31473157 void drawTrammingMenu () {
3158+ constexpr uint8_t items = (1
3159+ + 2 * ALL (HAS_BED_PROBE, HAS_MESH)
3160+ + (DISABLED (HAS_BED_PROBE) && ENABLED (HAS_ZOFFSET_ITEM))
3161+ + 4
3162+ + ENABLED (BED_TRAMMING_INCLUDE_CENTER)
3163+ );
31483164 checkkey = ID_Menu;
3149- if (SET_MENU (trammingMenu, MSG_BED_TRAMMING, 8 )) {
3165+ if (SET_MENU (trammingMenu, MSG_BED_TRAMMING, items )) {
31503166 BACK_ITEM (drawPrepareMenu);
31513167 #if HAS_BED_PROBE && HAS_MESH
31523168 MENU_ITEM (ICON_Tram, MSG_TRAMMING_WIZARD, onDrawMenuItem, trammingwizard);
@@ -3168,8 +3184,13 @@ void drawPrepareMenu() {
31683184#endif // LCD_BED_TRAMMING
31693185
31703186void drawControlMenu () {
3187+ constexpr uint8_t items = (3
3188+ + COUNT_ENABLED (CASE_LIGHT_MENU, LED_CONTROL_MENU)
3189+ + TERN0 (EEPROM_SETTINGS, 3 )
3190+ + 2
3191+ );
31713192 checkkey = ID_Menu;
3172- if (SET_MENU_R (controlMenu, selrect ({103 , 1 , 28 , 14 }), MSG_CONTROL, 11 )) {
3193+ if (SET_MENU_R (controlMenu, selrect ({103 , 1 , 28 , 14 }), MSG_CONTROL, items )) {
31733194 BACK_ITEM (gotoMainMenu);
31743195 MENU_ITEM (ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, drawTemperatureMenu);
31753196 MENU_ITEM (ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, drawMotionMenu);
@@ -3198,8 +3219,20 @@ void drawControlMenu() {
31983219}
31993220
32003221void drawAdvancedSettingsMenu () {
3222+ constexpr uint8_t items = (1
3223+ + COUNT_ENABLED (EEPROM_SETTINGS, HAS_MESH, HAS_BED_PROBE, HAS_HOME_OFFSET, HAS_TRINAMIC_CONFIG, HAS_ESDIAG, \
3224+ HAS_LOCKSCREEN, EDITABLE_DISPLAY_TIMEOUT, SOUND_MENU_ITEM, POWER_LOSS_RECOVERY, HAS_GCODE_PREVIEW, \
3225+ PROUI_MEDIASORT, BAUD_RATE_GCODE, HAS_CUSTOM_COLORS)
3226+ + 1
3227+ + (ENABLED (PIDTEMP) && ANY (PID_AUTOTUNE_MENU, PID_EDIT_MENU))
3228+ + ANY (MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)
3229+ + (ENABLED (PIDTEMPBED) && ANY (PID_AUTOTUNE_MENU, PID_EDIT_MENU))
3230+ + TERN0 (PRINTCOUNTER, 2 )
3231+ + 1
3232+ + TERN0 (HAS_LCD_BRIGHTNESS, 2 )
3233+ );
32013234 checkkey = ID_Menu;
3202- if (SET_MENU (advancedSettingsMenu, MSG_ADVANCED_SETTINGS, 24 )) {
3235+ if (SET_MENU (advancedSettingsMenu, MSG_ADVANCED_SETTINGS, items )) {
32033236 BACK_ITEM (gotoMainMenu);
32043237 #if ENABLED(EEPROM_SETTINGS)
32053238 MENU_ITEM (ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM);
@@ -3268,8 +3301,9 @@ void drawAdvancedSettingsMenu() {
32683301}
32693302
32703303void drawMoveMenu () {
3304+ constexpr uint8_t items = 2 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
32713305 checkkey = ID_Menu;
3272- if (SET_MENU_R (moveMenu, selrect ({192 , 1 , 42 , 14 }), MSG_MOVE_AXIS, 6 )) {
3306+ if (SET_MENU_R (moveMenu, selrect ({192 , 1 , 42 , 14 }), MSG_MOVE_AXIS, items )) {
32733307 BACK_ITEM (drawPrepareMenu);
32743308 EDIT_ITEM (ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, setLiveMove, &enableLiveMove);
32753309 #if HAS_X_AXIS
@@ -3293,8 +3327,9 @@ void drawMoveMenu() {
32933327#if HAS_HOME_OFFSET
32943328
32953329 void drawHomeOffsetMenu () {
3330+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS);
32963331 checkkey = ID_Menu;
3297- if (SET_MENU (homeOffsetMenu, MSG_SET_HOME_OFFSETS, 4 )) {
3332+ if (SET_MENU (homeOffsetMenu, MSG_SET_HOME_OFFSETS, items )) {
32983333 BACK_ITEM (drawAdvancedSettingsMenu);
32993334 #if HAS_X_AXIS
33003335 EDIT_ITEM (ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x );
@@ -3314,8 +3349,12 @@ void drawMoveMenu() {
33143349#if HAS_BED_PROBE
33153350
33163351 void drawProbeSetMenu () {
3352+ constexpr uint8_t items = (1
3353+ + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, Z_MIN_PROBE_REPEATABILITY_TEST)
3354+ + TERN0 (BLTOUCH, 3 + ENABLED (HAS_BLTOUCH_HS_MODE))
3355+ );
33173356 checkkey = ID_Menu;
3318- if (SET_MENU (probeSettingsMenu, MSG_ZPROBE_SETTINGS, 9 )) {
3357+ if (SET_MENU (probeSettingsMenu, MSG_ZPROBE_SETTINGS, items )) {
33193358 BACK_ITEM (drawAdvancedSettingsMenu);
33203359 #if HAS_X_AXIS
33213360 EDIT_ITEM (ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, setProbeOffsetX, &probe.offset .x );
@@ -3344,8 +3383,12 @@ void drawMoveMenu() {
33443383#endif // HAS_BED_PROBE
33453384
33463385void drawFilSetMenu () {
3386+ constexpr uint8_t items = (1
3387+ + COUNT_ENABLED (HAS_FILAMENT_SENSOR, HAS_FILAMENT_RUNOUT_DISTANCE, PREVENT_COLD_EXTRUSION, FWRETRACT)
3388+ + TERN0 (CONFIGURE_FILAMENT_CHANGE, 2 )
3389+ );
33473390 checkkey = ID_Menu;
3348- if (SET_MENU (filSetMenu, MSG_FILAMENT_SET, 9 )) {
3391+ if (SET_MENU (filSetMenu, MSG_FILAMENT_SET, items )) {
33493392 BACK_ITEM (drawAdvancedSettingsMenu);
33503393 #if HAS_FILAMENT_SENSOR
33513394 EDIT_ITEM (ICON_Runout, MSG_RUNOUT_SENSOR, onDrawChkbMenu, setRunoutEnable, &runout.enabled );
@@ -3384,8 +3427,12 @@ void drawFilSetMenu() {
33843427#if ENABLED(LED_CONTROL_MENU)
33853428
33863429 void drawLedControlMenu () {
3430+ constexpr uint8_t items = (1
3431+ + !ALL (CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL)
3432+ + ENABLED (HAS_COLOR_LEDS) * TERN (LED_COLOR_PRESETS, 8 , 3 + ENABLED (HAS_WHITE_LED)),
3433+ );
33873434 checkkey = ID_Menu;
3388- if (SET_MENU (ledControlMenu, MSG_LED_CONTROL, 10 )) {
3435+ if (SET_MENU (ledControlMenu, MSG_LED_CONTROL, items )) {
33893436 BACK_ITEM ((currentMenu == tuneMenu) ? drawTuneMenu : drawControlMenu);
33903437 #if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL)
33913438 EDIT_ITEM (ICON_LedControl, MSG_LIGHTS, onDrawChkbMenu, setLedStatus, &leds.lights_on );
@@ -3416,8 +3463,21 @@ void drawFilSetMenu() {
34163463#endif // LED_CONTROL_MENU
34173464
34183465void drawTuneMenu () {
3466+ constexpr uint8_t items = (2
3467+ + COUNT_ENABLED (HAS_HOTEND, HAS_HEATED_BED, HAS_FAN)
3468+ + ALL (HAS_ZOFFSET_ITEM, BABYSTEPPING)
3469+ + 1
3470+ + COUNT_ENABLED (ADVANCED_PAUSE_FEATURE, HAS_FILAMENT_SENSOR, PROUI_ITEM_PLR, FWRETRACT, PROUI_ITEM_JD, PROUI_ITEM_ADVK, HAS_LOCKSCREEN)
3471+ + TERN0 (HAS_LCD_BRIGHTNESS, 2 )
3472+ + ENABLED (EDITABLE_DISPLAY_TIMEOUT)
3473+ + 2 * ALL (PROUI_TUNING_GRAPH, PROUI_ITEM_PLOT)
3474+ + TERN (CASE_LIGHT_MENU,
3475+ 1 + COUNT_ENABLED (CASELIGHT_USES_BRIGHTNESS, LED_CONTROL_MENU),
3476+ ENABLED (LED_CONTROL_MENU) && DISABLED (CASE_LIGHT_USE_NEOPIXEL)
3477+ )
3478+ );
34193479 checkkey = ID_Menu;
3420- if (SET_MENU_R (tuneMenu, selrect ({73 , 2 , 28 , 12 }), MSG_TUNE, 20 )) {
3480+ if (SET_MENU_R (tuneMenu, selrect ({73 , 2 , 28 , 12 }), MSG_TUNE, items )) {
34213481 BACK_ITEM (gotoPrintProcess);
34223482 EDIT_ITEM (ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage);
34233483 #if HAS_HOTEND
@@ -3518,8 +3578,9 @@ void drawTuneMenu() {
35183578 #endif
35193579
35203580 void drawInputShaping_menu () {
3581+ constexpr uint8_t items = 1 + 2 * COUNT_ENABLED (INPUT_SHAPING_X, INPUT_SHAPING_Y, INPUT_SHAPING_Z);
35213582 checkkey = ID_Menu;
3522- 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 ) )) {
3583+ if (SET_MENU (inputShapingMenu, MSG_INPUT_SHAPING, items )) {
35233584 BACK_ITEM (drawMotionMenu);
35243585 #if ENABLED(INPUT_SHAPING_X)
35253586 MENU_ITEM (ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, setShapingXFreq);
@@ -3553,8 +3614,22 @@ void drawTuneMenu() {
35533614 #endif
35543615
35553616 void drawTrinamicConfigMenu () {
3617+ constexpr uint8_t items = (1
3618+ #if AXIS_IS_TMC(X)
3619+ + 1
3620+ #endif
3621+ #if AXIS_IS_TMC(Y)
3622+ + 1
3623+ #endif
3624+ #if AXIS_IS_TMC(Z)
3625+ + 1
3626+ #endif
3627+ #if AXIS_IS_TMC(E0)
3628+ + 1
3629+ #endif
3630+ );
35563631 checkkey = ID_Menu;
3557- if (SET_MENU (trinamicConfigMenu, MSG_TMC_DRIVERS, 5 )) {
3632+ if (SET_MENU (trinamicConfigMenu, MSG_TMC_DRIVERS, items )) {
35583633 BACK_ITEM (drawAdvancedSettingsMenu);
35593634 #if AXIS_IS_TMC(X)
35603635 EDIT_ITEM (ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, setXTMCCurrent, &stepperX.val_mA );
@@ -3574,8 +3649,12 @@ void drawTuneMenu() {
35743649#endif
35753650
35763651void drawMotionMenu () {
3652+ constexpr uint8_t items = (4
3653+ + COUNT_ENABLED (EDITABLE_STEPS_PER_UNIT, EDITABLE_HOMING_FEEDRATE, LIN_ADVANCE, SHAPING_MENU, ADAPTIVE_STEP_SMOOTHING_TOGGLE)
3654+ + 2
3655+ );
35773656 checkkey = ID_Menu;
3578- if (SET_MENU_R (motionMenu, selrect ({1 , 16 , 28 , 13 }), MSG_MOTION, 11 )) {
3657+ if (SET_MENU_R (motionMenu, selrect ({1 , 16 , 28 , 13 }), MSG_MOTION, items )) {
35793658 BACK_ITEM (drawControlMenu);
35803659 MENU_ITEM (ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, drawMaxSpeedMenu);
35813660 MENU_ITEM (ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, drawMaxAccelMenu);
@@ -3620,8 +3699,13 @@ void drawMotionMenu() {
36203699#endif
36213700
36223701void drawFilamentManMenu () {
3702+ constexpr uint8_t items = (1
3703+ + ENABLED (NOZZLE_PARK_FEATURE)
3704+ + TERN0 (ADVANCED_PAUSE_FEATURE, 1 + ENABLED (HAS_PREHEAT))
3705+ + TERN0 (FILAMENT_LOAD_UNLOAD_GCODES, 2 )
3706+ );
36233707 checkkey = ID_Menu;
3624- if (SET_MENU (filamentMenu, MSG_FILAMENT_MAN, 6 )) {
3708+ if (SET_MENU (filamentMenu, MSG_FILAMENT_MAN, items )) {
36253709 BACK_ITEM (drawPrepareMenu);
36263710 #if ENABLED(NOZZLE_PARK_FEATURE)
36273711 MENU_ITEM (ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, parkHead);
@@ -3681,16 +3765,21 @@ void drawFilamentManMenu() {
36813765
36823766 #define _preheatMenu (N ) \
36833767 void drawPreheat## N ##Menu() { \
3768+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_HOTEND, HAS_HEATED_BED, HAS_FAN, EEPROM_SETTINGS); \
36843769 hmiValue.select = (N) - 1 ; \
3685- drawPreheatMenu (SET_MENU (preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5 )); \
3770+ drawPreheatMenu (SET_MENU (preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, items )); \
36863771 }
36873772 REPEAT_1 (PREHEAT_COUNT, _preheatMenu)
36883773
36893774#endif // HAS_PREHEAT
36903775
36913776void drawTemperatureMenu () {
3777+ constexpr uint8_t items = (1
3778+ + COUNT_ENABLED (HAS_HOTEND, HAS_HEATED_BED, HAS_FAN)
3779+ + PREHEAT_COUNT
3780+ );
36923781 checkkey = ID_Menu;
3693- if (SET_MENU_R (temperatureMenu, selrect ({236 , 2 , 28 , 12 }), MSG_TEMPERATURE, 4 + PREHEAT_COUNT )) {
3782+ if (SET_MENU_R (temperatureMenu, selrect ({236 , 2 , 28 , 12 }), MSG_TEMPERATURE, items )) {
36943783 BACK_ITEM (drawControlMenu);
36953784 #if HAS_HOTEND
36963785 hotendTargetItem = EDIT_ITEM (ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend [0 ].target );
@@ -3710,8 +3799,9 @@ void drawTemperatureMenu() {
37103799}
37113800
37123801void drawMaxSpeedMenu () {
3802+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
37133803 checkkey = ID_Menu;
3714- if (SET_MENU_R (maxSpeedMenu, selrect ({1 , 16 , 28 , 13 }), MSG_MAX_SPEED, 5 )) {
3804+ if (SET_MENU_R (maxSpeedMenu, selrect ({1 , 16 , 28 , 13 }), MSG_MAX_SPEED, items )) {
37153805 BACK_ITEM (drawMotionMenu);
37163806 #if HAS_X_AXIS
37173807 EDIT_ITEM (ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, setMaxSpeedX, &planner.settings .max_feedrate_mm_s [X_AXIS]);
@@ -3730,8 +3820,9 @@ void drawMaxSpeedMenu() {
37303820}
37313821
37323822void drawMaxAccelMenu () {
3823+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
37333824 checkkey = ID_Menu;
3734- if (SET_MENU_R (maxAccelMenu, selrect ({1 , 16 , 28 , 13 }), MSG_AMAX_EN, 5 )) {
3825+ if (SET_MENU_R (maxAccelMenu, selrect ({1 , 16 , 28 , 13 }), MSG_AMAX_EN, items )) {
37353826 BACK_ITEM (drawMotionMenu);
37363827 #if HAS_X_AXIS
37373828 EDIT_ITEM (ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, setMaxAccelX, &planner.settings .max_acceleration_mm_per_s2 [X_AXIS]);
@@ -3752,8 +3843,9 @@ void drawMaxAccelMenu() {
37523843#if ENABLED(CLASSIC_JERK)
37533844
37543845 void drawMaxJerkMenu () {
3846+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
37553847 checkkey = ID_Menu;
3756- if (SET_MENU_R (maxJerkMenu, selrect ({1 , 16 , 28 , 13 }), MSG_JERK, 5 )) {
3848+ if (SET_MENU_R (maxJerkMenu, selrect ({1 , 16 , 28 , 13 }), MSG_JERK, items )) {
37573849 BACK_ITEM (drawMotionMenu);
37583850 #if HAS_X_AXIS
37593851 EDIT_ITEM (ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, setMaxJerkX, &planner.max_jerk .x );
@@ -3776,8 +3868,9 @@ void drawMaxAccelMenu() {
37763868#if ENABLED(EDITABLE_STEPS_PER_UNIT)
37773869
37783870 void drawStepsMenu () {
3871+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
37793872 checkkey = ID_Menu;
3780- if (SET_MENU_R (stepsMenu, selrect ({1 , 16 , 28 , 13 }), MSG_STEPS_PER_MM, 5 )) {
3873+ if (SET_MENU_R (stepsMenu, selrect ({1 , 16 , 28 , 13 }), MSG_STEPS_PER_MM, items )) {
37813874 BACK_ITEM (drawMotionMenu);
37823875 #if HAS_X_AXIS
37833876 EDIT_ITEM (ICON_StepX, MSG_A_STEPS, onDrawStepsX, setStepsX, &planner.settings .axis_steps_per_mm [X_AXIS]);
@@ -3800,8 +3893,9 @@ void drawMaxAccelMenu() {
38003893#if ENABLED(EDITABLE_HOMING_FEEDRATE)
38013894
38023895 void drawHomingFRMenu () {
3896+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS);
38033897 checkkey = ID_Menu;
3804- if (SET_MENU (homingFRMenu, MSG_HOMING_FEEDRATE, 4 )) {
3898+ if (SET_MENU (homingFRMenu, MSG_HOMING_FEEDRATE, items )) {
38053899 BACK_ITEM (drawMotionMenu);
38063900 #if HAS_X_AXIS
38073901 uint16_t xhome = static_cast <uint16_t >(homing_feedrate_mm_m.x );
@@ -3921,8 +4015,12 @@ void drawMaxAccelMenu() {
39214015 #endif
39224016
39234017 void drawHotendMPCMenu () {
4018+ constexpr uint8_t items = (1
4019+ + ENABLED (MPC_AUTOTUNE_MENU)
4020+ + TERN0 (MPC_EDIT_MENU, 4 + ENABLED (MPC_INCLUDE_FAN))
4021+ );
39244022 checkkey = ID_Menu;
3925- if (SET_MENU_F (hotendMPCMenu, " MPC Settings" , 7 )) {
4023+ if (SET_MENU_F (hotendMPCMenu, " MPC Settings" , items )) {
39264024 MPC_t &mpc = thermalManager.temp_hotend [0 ].mpc ;
39274025 BACK_ITEM (drawAdvancedSettingsMenu);
39284026 #if ENABLED(MPC_AUTOTUNE_MENU)
@@ -3991,8 +4089,13 @@ void drawMaxAccelMenu() {
39914089 #endif
39924090
39934091 void drawHotendPIDMenu () {
4092+ constexpr uint8_t items = (1
4093+ + TERN0 (PID_AUTOTUNE_MENU, 3 )
4094+ + TERN0 (PID_EDIT_MENU, 3 )
4095+ + ENABLED (EEPROM_SETTINGS)
4096+ );
39944097 checkkey = ID_Menu;
3995- if (SET_MENU_F (hotendPIDMenu, STR_HOTEND_PID " Settings" , 8 )) {
4098+ if (SET_MENU_F (hotendPIDMenu, STR_HOTEND_PID " Settings" , items )) {
39964099 BACK_ITEM (drawAdvancedSettingsMenu);
39974100 #if ENABLED(PID_AUTOTUNE_MENU)
39984101 MENU_ITEM_F (ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, hotendPID);
@@ -4021,8 +4124,13 @@ void drawMaxAccelMenu() {
40214124 #endif
40224125
40234126 void drawBedPIDMenu () {
4127+ constexpr uint8_t items = (1
4128+ + TERN0 (PID_AUTOTUNE_MENU, 3 )
4129+ + TERN0 (PID_EDIT_MENU, 3 )
4130+ + ENABLED (EEPROM_SETTINGS)
4131+ );
40244132 checkkey = ID_Menu;
4025- if (SET_MENU_F (bedPIDMenu, STR_BED_PID " Settings" , 8 )) {
4133+ if (SET_MENU_F (bedPIDMenu, STR_BED_PID " Settings" , items )) {
40264134 BACK_ITEM (drawAdvancedSettingsMenu);
40274135 #if ENABLED(PID_AUTOTUNE_MENU)
40284136 MENU_ITEM_F (ICON_PIDBed, STR_BED_PID, onDrawMenuItem,bedPID);
@@ -4051,8 +4159,13 @@ void drawMaxAccelMenu() {
40514159 #endif
40524160
40534161 void drawChamberPIDMenu () {
4162+ constexpr uint8_t items = (1
4163+ + TERN0 (PID_AUTOTUNE_MENU, 3 )
4164+ + TERN0 (PID_EDIT_MENU, 3 )
4165+ + ENABLED (EEPROM_SETTINGS)
4166+ );
40544167 checkkey = ID_Menu;
4055- if (SET_MENU_F (chamberPIDMenu, STR_CHAMBER_PID " Settings" , 8 )) {
4168+ if (SET_MENU_F (chamberPIDMenu, STR_CHAMBER_PID " Settings" , items )) {
40564169 BACK_ITEM (drawAdvancedSettingsMenu);
40574170 #if ENABLED(PID_AUTOTUNE_MENU)
40584171 MENU_ITEM_F (ICON_PIDChamber, STR_CHAMBER_PID, onDrawMenuItem,chamberPID);
@@ -4096,8 +4209,9 @@ void drawMaxAccelMenu() {
40964209#if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
40974210
40984211 void drawHomingMenu () {
4212+ constexpr uint8_t items = 2 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, Z_STEPPER_AUTO_ALIGN, MESH_BED_LEVELING);
40994213 checkkey = ID_Menu;
4100- if (SET_MENU (homingMenu, MSG_HOMING, 6 )) {
4214+ if (SET_MENU (homingMenu, MSG_HOMING, items )) {
41014215 BACK_ITEM (drawPrepareMenu);
41024216 MENU_ITEM (ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, autoHome);
41034217 #if HAS_X_AXIS
@@ -4212,8 +4326,16 @@ void drawMaxAccelMenu() {
42124326#if HAS_MESH
42134327
42144328 void drawMeshSetMenu () {
4329+ constexpr uint8_t items = (1
4330+ + ENABLED (PREHEAT_BEFORE_LEVELING)
4331+ + 2
4332+ + ENABLED (HAS_BED_PROBE)
4333+ + TERN0 (AUTO_BED_LEVELING_UBL, 6 )
4334+ + TERN0 (PROUI_MESH_EDIT, 2 )
4335+ + 1
4336+ );
42154337 checkkey = ID_Menu;
4216- if (SET_MENU (meshMenu, MSG_MESH_LEVELING, 14 )) {
4338+ if (SET_MENU (meshMenu, MSG_MESH_LEVELING, items )) {
42174339 BACK_ITEM (drawAdvancedSettingsMenu);
42184340 #if ENABLED(PREHEAT_BEFORE_LEVELING)
42194341 EDIT_ITEM (ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, setBedLevT, &hmiData.bedLevT );
0 commit comments