@@ -3101,8 +3101,18 @@ frame_rect_t selrect(frame_rect_t) {
3101
3101
}
3102
3102
3103
3103
void 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
+ );
3104
3114
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 )) {
3106
3116
BACK_ITEM (gotoMainMenu);
3107
3117
MENU_ITEM (ICON_FilMan, MSG_FILAMENT_MAN, onDrawSubMenu, drawFilamentManMenu);
3108
3118
MENU_ITEM (ICON_Axis, MSG_MOVE_AXIS, onDrawMoveSubMenu, drawMoveMenu);
@@ -3145,8 +3155,14 @@ void drawPrepareMenu() {
3145
3155
#if ENABLED(LCD_BED_TRAMMING)
3146
3156
3147
3157
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
+ );
3148
3164
checkkey = ID_Menu;
3149
- if (SET_MENU (trammingMenu, MSG_BED_TRAMMING, 8 )) {
3165
+ if (SET_MENU (trammingMenu, MSG_BED_TRAMMING, items )) {
3150
3166
BACK_ITEM (drawPrepareMenu);
3151
3167
#if HAS_BED_PROBE && HAS_MESH
3152
3168
MENU_ITEM (ICON_Tram, MSG_TRAMMING_WIZARD, onDrawMenuItem, trammingwizard);
@@ -3168,8 +3184,13 @@ void drawPrepareMenu() {
3168
3184
#endif // LCD_BED_TRAMMING
3169
3185
3170
3186
void drawControlMenu () {
3187
+ constexpr uint8_t items = (3
3188
+ + COUNT_ENABLED (CASE_LIGHT_MENU, LED_CONTROL_MENU)
3189
+ + TERN0 (EEPROM_SETTINGS, 3 )
3190
+ + 2
3191
+ );
3171
3192
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 )) {
3173
3194
BACK_ITEM (gotoMainMenu);
3174
3195
MENU_ITEM (ICON_Temperature, MSG_TEMPERATURE, onDrawTempSubMenu, drawTemperatureMenu);
3175
3196
MENU_ITEM (ICON_Motion, MSG_MOTION, onDrawMotionSubMenu, drawMotionMenu);
@@ -3198,8 +3219,20 @@ void drawControlMenu() {
3198
3219
}
3199
3220
3200
3221
void 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
+ );
3201
3234
checkkey = ID_Menu;
3202
- if (SET_MENU (advancedSettingsMenu, MSG_ADVANCED_SETTINGS, 24 )) {
3235
+ if (SET_MENU (advancedSettingsMenu, MSG_ADVANCED_SETTINGS, items )) {
3203
3236
BACK_ITEM (gotoMainMenu);
3204
3237
#if ENABLED(EEPROM_SETTINGS)
3205
3238
MENU_ITEM (ICON_WriteEEPROM, MSG_STORE_EEPROM, onDrawMenuItem, writeEEPROM);
@@ -3268,8 +3301,9 @@ void drawAdvancedSettingsMenu() {
3268
3301
}
3269
3302
3270
3303
void drawMoveMenu () {
3304
+ constexpr uint8_t items = 2 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
3271
3305
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 )) {
3273
3307
BACK_ITEM (drawPrepareMenu);
3274
3308
EDIT_ITEM (ICON_Axis, MSG_LIVE_MOVE, onDrawChkbMenu, setLiveMove, &enableLiveMove);
3275
3309
#if HAS_X_AXIS
@@ -3293,8 +3327,9 @@ void drawMoveMenu() {
3293
3327
#if HAS_HOME_OFFSET
3294
3328
3295
3329
void drawHomeOffsetMenu () {
3330
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS);
3296
3331
checkkey = ID_Menu;
3297
- if (SET_MENU (homeOffsetMenu, MSG_SET_HOME_OFFSETS, 4 )) {
3332
+ if (SET_MENU (homeOffsetMenu, MSG_SET_HOME_OFFSETS, items )) {
3298
3333
BACK_ITEM (drawAdvancedSettingsMenu);
3299
3334
#if HAS_X_AXIS
3300
3335
EDIT_ITEM (ICON_HomeOffsetX, MSG_HOME_OFFSET_X, onDrawPFloatMenu, setHomeOffsetX, &home_offset.x );
@@ -3314,8 +3349,12 @@ void drawMoveMenu() {
3314
3349
#if HAS_BED_PROBE
3315
3350
3316
3351
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
+ );
3317
3356
checkkey = ID_Menu;
3318
- if (SET_MENU (probeSettingsMenu, MSG_ZPROBE_SETTINGS, 9 )) {
3357
+ if (SET_MENU (probeSettingsMenu, MSG_ZPROBE_SETTINGS, items )) {
3319
3358
BACK_ITEM (drawAdvancedSettingsMenu);
3320
3359
#if HAS_X_AXIS
3321
3360
EDIT_ITEM (ICON_ProbeOffsetX, MSG_ZPROBE_XOFFSET, onDrawPFloatMenu, setProbeOffsetX, &probe.offset .x );
@@ -3344,8 +3383,12 @@ void drawMoveMenu() {
3344
3383
#endif // HAS_BED_PROBE
3345
3384
3346
3385
void 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
+ );
3347
3390
checkkey = ID_Menu;
3348
- if (SET_MENU (filSetMenu, MSG_FILAMENT_SET, 9 )) {
3391
+ if (SET_MENU (filSetMenu, MSG_FILAMENT_SET, items )) {
3349
3392
BACK_ITEM (drawAdvancedSettingsMenu);
3350
3393
#if HAS_FILAMENT_SENSOR
3351
3394
EDIT_ITEM (ICON_Runout, MSG_RUNOUT_SENSOR, onDrawChkbMenu, setRunoutEnable, &runout.enabled );
@@ -3384,8 +3427,12 @@ void drawFilSetMenu() {
3384
3427
#if ENABLED(LED_CONTROL_MENU)
3385
3428
3386
3429
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
+ );
3387
3434
checkkey = ID_Menu;
3388
- if (SET_MENU (ledControlMenu, MSG_LED_CONTROL, 10 )) {
3435
+ if (SET_MENU (ledControlMenu, MSG_LED_CONTROL, items )) {
3389
3436
BACK_ITEM ((currentMenu == tuneMenu) ? drawTuneMenu : drawControlMenu);
3390
3437
#if !ALL(CASE_LIGHT_MENU, CASE_LIGHT_USE_NEOPIXEL)
3391
3438
EDIT_ITEM (ICON_LedControl, MSG_LIGHTS, onDrawChkbMenu, setLedStatus, &leds.lights_on );
@@ -3416,8 +3463,21 @@ void drawFilSetMenu() {
3416
3463
#endif // LED_CONTROL_MENU
3417
3464
3418
3465
void 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
+ );
3419
3479
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 )) {
3421
3481
BACK_ITEM (gotoPrintProcess);
3422
3482
EDIT_ITEM (ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage);
3423
3483
#if HAS_HOTEND
@@ -3518,8 +3578,9 @@ void drawTuneMenu() {
3518
3578
#endif
3519
3579
3520
3580
void drawInputShaping_menu () {
3581
+ constexpr uint8_t items = 1 + 2 * COUNT_ENABLED (INPUT_SHAPING_X, INPUT_SHAPING_Y, INPUT_SHAPING_Z);
3521
3582
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 )) {
3523
3584
BACK_ITEM (drawMotionMenu);
3524
3585
#if ENABLED(INPUT_SHAPING_X)
3525
3586
MENU_ITEM (ICON_ShapingX, MSG_SHAPING_A_FREQ, onDrawShapingXFreq, setShapingXFreq);
@@ -3553,8 +3614,22 @@ void drawTuneMenu() {
3553
3614
#endif
3554
3615
3555
3616
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
+ );
3556
3631
checkkey = ID_Menu;
3557
- if (SET_MENU (trinamicConfigMenu, MSG_TMC_DRIVERS, 5 )) {
3632
+ if (SET_MENU (trinamicConfigMenu, MSG_TMC_DRIVERS, items )) {
3558
3633
BACK_ITEM (drawAdvancedSettingsMenu);
3559
3634
#if AXIS_IS_TMC(X)
3560
3635
EDIT_ITEM (ICON_TMCXSet, MSG_TMC_ACURRENT, onDrawPIntMenu, setXTMCCurrent, &stepperX.val_mA );
@@ -3574,8 +3649,12 @@ void drawTuneMenu() {
3574
3649
#endif
3575
3650
3576
3651
void 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
+ );
3577
3656
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 )) {
3579
3658
BACK_ITEM (drawControlMenu);
3580
3659
MENU_ITEM (ICON_MaxSpeed, MSG_SPEED, onDrawSpeed, drawMaxSpeedMenu);
3581
3660
MENU_ITEM (ICON_MaxAccelerated, MSG_ACCELERATION, onDrawAcc, drawMaxAccelMenu);
@@ -3620,8 +3699,13 @@ void drawMotionMenu() {
3620
3699
#endif
3621
3700
3622
3701
void 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
+ );
3623
3707
checkkey = ID_Menu;
3624
- if (SET_MENU (filamentMenu, MSG_FILAMENT_MAN, 6 )) {
3708
+ if (SET_MENU (filamentMenu, MSG_FILAMENT_MAN, items )) {
3625
3709
BACK_ITEM (drawPrepareMenu);
3626
3710
#if ENABLED(NOZZLE_PARK_FEATURE)
3627
3711
MENU_ITEM (ICON_Park, MSG_FILAMENT_PARK_ENABLED, onDrawMenuItem, parkHead);
@@ -3681,16 +3765,21 @@ void drawFilamentManMenu() {
3681
3765
3682
3766
#define _preheatMenu (N ) \
3683
3767
void drawPreheat## N ##Menu() { \
3768
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_HOTEND, HAS_HEATED_BED, HAS_FAN, EEPROM_SETTINGS); \
3684
3769
hmiValue.select = (N) - 1 ; \
3685
- drawPreheatMenu (SET_MENU (preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, 5 )); \
3770
+ drawPreheatMenu (SET_MENU (preheatMenu, MSG_PREHEAT_## N ##_SETTINGS, items )); \
3686
3771
}
3687
3772
REPEAT_1 (PREHEAT_COUNT, _preheatMenu)
3688
3773
3689
3774
#endif // HAS_PREHEAT
3690
3775
3691
3776
void drawTemperatureMenu () {
3777
+ constexpr uint8_t items = (1
3778
+ + COUNT_ENABLED (HAS_HOTEND, HAS_HEATED_BED, HAS_FAN)
3779
+ + PREHEAT_COUNT
3780
+ );
3692
3781
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 )) {
3694
3783
BACK_ITEM (drawControlMenu);
3695
3784
#if HAS_HOTEND
3696
3785
hotendTargetItem = EDIT_ITEM (ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend [0 ].target );
@@ -3710,8 +3799,9 @@ void drawTemperatureMenu() {
3710
3799
}
3711
3800
3712
3801
void drawMaxSpeedMenu () {
3802
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
3713
3803
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 )) {
3715
3805
BACK_ITEM (drawMotionMenu);
3716
3806
#if HAS_X_AXIS
3717
3807
EDIT_ITEM (ICON_MaxSpeedX, MSG_VMAX_A, onDrawMaxSpeedX, setMaxSpeedX, &planner.settings .max_feedrate_mm_s [X_AXIS]);
@@ -3730,8 +3820,9 @@ void drawMaxSpeedMenu() {
3730
3820
}
3731
3821
3732
3822
void drawMaxAccelMenu () {
3823
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
3733
3824
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 )) {
3735
3826
BACK_ITEM (drawMotionMenu);
3736
3827
#if HAS_X_AXIS
3737
3828
EDIT_ITEM (ICON_MaxAccX, MSG_AMAX_A, onDrawMaxAccelX, setMaxAccelX, &planner.settings .max_acceleration_mm_per_s2 [X_AXIS]);
@@ -3752,8 +3843,9 @@ void drawMaxAccelMenu() {
3752
3843
#if ENABLED(CLASSIC_JERK)
3753
3844
3754
3845
void drawMaxJerkMenu () {
3846
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
3755
3847
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 )) {
3757
3849
BACK_ITEM (drawMotionMenu);
3758
3850
#if HAS_X_AXIS
3759
3851
EDIT_ITEM (ICON_MaxSpeedJerkX, MSG_VA_JERK, onDrawMaxJerkX, setMaxJerkX, &planner.max_jerk .x );
@@ -3776,8 +3868,9 @@ void drawMaxAccelMenu() {
3776
3868
#if ENABLED(EDITABLE_STEPS_PER_UNIT)
3777
3869
3778
3870
void drawStepsMenu () {
3871
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS, HAS_HOTEND);
3779
3872
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 )) {
3781
3874
BACK_ITEM (drawMotionMenu);
3782
3875
#if HAS_X_AXIS
3783
3876
EDIT_ITEM (ICON_StepX, MSG_A_STEPS, onDrawStepsX, setStepsX, &planner.settings .axis_steps_per_mm [X_AXIS]);
@@ -3800,8 +3893,9 @@ void drawMaxAccelMenu() {
3800
3893
#if ENABLED(EDITABLE_HOMING_FEEDRATE)
3801
3894
3802
3895
void drawHomingFRMenu () {
3896
+ constexpr uint8_t items = 1 + COUNT_ENABLED (HAS_X_AXIS, HAS_Y_AXIS, HAS_Z_AXIS);
3803
3897
checkkey = ID_Menu;
3804
- if (SET_MENU (homingFRMenu, MSG_HOMING_FEEDRATE, 4 )) {
3898
+ if (SET_MENU (homingFRMenu, MSG_HOMING_FEEDRATE, items )) {
3805
3899
BACK_ITEM (drawMotionMenu);
3806
3900
#if HAS_X_AXIS
3807
3901
uint16_t xhome = static_cast <uint16_t >(homing_feedrate_mm_m.x );
@@ -3921,8 +4015,12 @@ void drawMaxAccelMenu() {
3921
4015
#endif
3922
4016
3923
4017
void drawHotendMPCMenu () {
4018
+ constexpr uint8_t items = (1
4019
+ + ENABLED (MPC_AUTOTUNE_MENU)
4020
+ + TERN0 (MPC_EDIT_MENU, 4 + ENABLED (MPC_INCLUDE_FAN))
4021
+ );
3924
4022
checkkey = ID_Menu;
3925
- if (SET_MENU_F (hotendMPCMenu, " MPC Settings" , 7 )) {
4023
+ if (SET_MENU_F (hotendMPCMenu, " MPC Settings" , items )) {
3926
4024
MPC_t &mpc = thermalManager.temp_hotend [0 ].mpc ;
3927
4025
BACK_ITEM (drawAdvancedSettingsMenu);
3928
4026
#if ENABLED(MPC_AUTOTUNE_MENU)
@@ -3991,8 +4089,13 @@ void drawMaxAccelMenu() {
3991
4089
#endif
3992
4090
3993
4091
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
+ );
3994
4097
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 )) {
3996
4099
BACK_ITEM (drawAdvancedSettingsMenu);
3997
4100
#if ENABLED(PID_AUTOTUNE_MENU)
3998
4101
MENU_ITEM_F (ICON_PIDNozzle, STR_HOTEND_PID, onDrawMenuItem, hotendPID);
@@ -4021,8 +4124,13 @@ void drawMaxAccelMenu() {
4021
4124
#endif
4022
4125
4023
4126
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
+ );
4024
4132
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 )) {
4026
4134
BACK_ITEM (drawAdvancedSettingsMenu);
4027
4135
#if ENABLED(PID_AUTOTUNE_MENU)
4028
4136
MENU_ITEM_F (ICON_PIDBed, STR_BED_PID, onDrawMenuItem,bedPID);
@@ -4051,8 +4159,13 @@ void drawMaxAccelMenu() {
4051
4159
#endif
4052
4160
4053
4161
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
+ );
4054
4167
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 )) {
4056
4169
BACK_ITEM (drawAdvancedSettingsMenu);
4057
4170
#if ENABLED(PID_AUTOTUNE_MENU)
4058
4171
MENU_ITEM_F (ICON_PIDChamber, STR_CHAMBER_PID, onDrawMenuItem,chamberPID);
@@ -4096,8 +4209,9 @@ void drawMaxAccelMenu() {
4096
4209
#if ENABLED(INDIVIDUAL_AXIS_HOMING_SUBMENU)
4097
4210
4098
4211
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);
4099
4213
checkkey = ID_Menu;
4100
- if (SET_MENU (homingMenu, MSG_HOMING, 6 )) {
4214
+ if (SET_MENU (homingMenu, MSG_HOMING, items )) {
4101
4215
BACK_ITEM (drawPrepareMenu);
4102
4216
MENU_ITEM (ICON_Homing, MSG_AUTO_HOME, onDrawMenuItem, autoHome);
4103
4217
#if HAS_X_AXIS
@@ -4212,8 +4326,16 @@ void drawMaxAccelMenu() {
4212
4326
#if HAS_MESH
4213
4327
4214
4328
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
+ );
4215
4337
checkkey = ID_Menu;
4216
- if (SET_MENU (meshMenu, MSG_MESH_LEVELING, 14 )) {
4338
+ if (SET_MENU (meshMenu, MSG_MESH_LEVELING, items )) {
4217
4339
BACK_ITEM (drawAdvancedSettingsMenu);
4218
4340
#if ENABLED(PREHEAT_BEFORE_LEVELING)
4219
4341
EDIT_ITEM (ICON_Temperature, MSG_UBL_SET_TEMP_BED, onDrawPIntMenu, setBedLevT, &hmiData.bedLevT );
0 commit comments