Skip to content

Commit bd37a07

Browse files
committed
Revert move menu optimization
🐛 Fix Axis Homing (#24425) 🐛 Fix Manual Move axis selection (#24404) 🎨 Simplify move menus with substitution (975c8f4)
1 parent 4df9db1 commit bd37a07

File tree

7 files changed

+28
-22
lines changed

7 files changed

+28
-22
lines changed

Marlin/src/lcd/marlinui.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -487,10 +487,13 @@ void MarlinUI::init() {
487487
ui.manual_move.menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
488488
ui.encoderPosition = dir;
489489
switch (axis) {
490-
case X_AXIS:
491-
TERN_(HAS_Y_AXIS, case Y_AXIS:)
492-
TERN_(HAS_Z_AXIS, case Z_AXIS:)
493-
lcd_move_axis(axis);
490+
case X_AXIS: { lcd_move_X(); } break;
491+
#if HAS_Y_AXIS
492+
case Y_AXIS: { lcd_move_Y(); } break;
493+
#endif
494+
#if HAS_Z_AXIS
495+
case Z_AXIS: { lcd_move_Z(); } break;
496+
#endif
494497
default: break;
495498
}
496499
}

Marlin/src/lcd/marlinui.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,14 @@ typedef bool (*statusResetFunc_t)();
176176
static void soon(const AxisEnum axis OPTARG(MULTI_E_MANUAL, const int8_t eindex=active_extruder));
177177
};
178178

179+
void lcd_move_X();
180+
#if HAS_Y_AXIS
181+
void lcd_move_Y();
182+
#endif
183+
#if HAS_Z_AXIS
184+
void lcd_move_Z();
185+
#endif
186+
179187
#endif
180188

181189
////////////////////////////////////////////

Marlin/src/lcd/menu/menu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ void MarlinUI::goto_screen(screenFunc_t screen, const uint16_t encoder/*=0*/, co
191191
else {
192192
#if ENABLED(MOVE_Z_WHEN_IDLE)
193193
ui.manual_move.menu_scale = MOVE_Z_IDLE_MULTIPLICATOR;
194-
screen = lcd_move_z;
194+
screen = lcd_move_Z;
195195
#endif
196196
}
197197
}

Marlin/src/lcd/menu/menu.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,6 @@ void menu_move();
214214
//////// Menu Item Helper Functions ////////
215215
////////////////////////////////////////////
216216

217-
void lcd_move_axis(const AxisEnum);
218-
void lcd_move_z();
219217
void _lcd_draw_homing();
220218

221219
#define HAS_LINE_TO_Z ANY(DELTA, PROBE_MANUALLY, MESH_BED_LEVELING, LCD_BED_TRAMMING)

Marlin/src/lcd/menu/menu_delta_calibrate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void _man_probe_pt(const xy_pos_t &xy) {
5252
ui.wait_for_move = false;
5353
ui.synchronize();
5454
ui.manual_move.menu_scale = _MAX(PROBE_MANUALLY_STEP, MIN_STEPS_PER_SEGMENT / planner.settings.axis_steps_per_mm[0]); // Use first axis as for delta XYZ should always match
55-
ui.goto_screen(lcd_move_z);
55+
ui.goto_screen(lcd_move_Z);
5656
}
5757
}
5858

Marlin/src/lcd/menu/menu_item.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
#include "../../module/planner.h"
3232
#endif
3333

34-
void lcd_move_z();
35-
3634
////////////////////////////////////////////
3735
///////////// Base Menu Items //////////////
3836
////////////////////////////////////////////

Marlin/src/lcd/menu/menu_motion.cpp

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ void lcd_move_axis(const AxisEnum axis) {
7474
}
7575
ui.encoderPosition = 0;
7676
if (ui.should_draw()) {
77+
MenuEditItemBase::itemIndex = axis;
7778
const float pos = ui.manual_move.axis_value(axis);
7879
if (parser.using_inch_units()) {
7980
const float imp_pos = LINEAR_UNIT(pos);
@@ -84,12 +85,12 @@ void lcd_move_axis(const AxisEnum axis) {
8485
}
8586
}
8687

87-
// Move Z easy accessor
88-
void lcd_move_z() { lcd_move_axis(Z_AXIS); }
88+
#define _LCD_MOVE_FN(N) void lcd_move_##N() { lcd_move_axis(_AXIS(N)); }
89+
MAIN_AXIS_MAP(_LCD_MOVE_FN);
8990

9091
#if E_MANUAL
9192

92-
static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
93+
static void lcd_move_E(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
9394
if (ui.use_click()) return ui.goto_previous_screen_no_defer();
9495
if (ui.encoderPosition) {
9596
if (!ui.manual_move.processing) {
@@ -118,7 +119,7 @@ void lcd_move_z() { lcd_move_axis(Z_AXIS); }
118119

119120
void _goto_manual_move_z(const_float_t scale) {
120121
ui.manual_move.menu_scale = scale;
121-
ui.goto_screen(lcd_move_z);
122+
ui.goto_screen(lcd_move_Z);
122123
}
123124

124125
#endif
@@ -171,7 +172,7 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
171172
#if E_MANUAL
172173

173174
inline void _goto_menu_move_distance_e() {
174-
ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_e(); }); });
175+
ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_E(); }); });
175176
}
176177

177178
inline void _menu_move_distance_e_maybe() {
@@ -201,20 +202,18 @@ void menu_move() {
201202
// Move submenu for each axis
202203
if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) {
203204
if (TERN1(DELTA, current_position.z <= delta_clip_start_height)) {
204-
SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, []{ lcd_move_axis(X_AXIS); }); });
205+
SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, lcd_move_X); });
205206
#if HAS_Y_AXIS
206-
SUBMENU_N(Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Y_AXIS, []{ lcd_move_axis(Y_AXIS); }); });
207+
SUBMENU_N(Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Y_AXIS, lcd_move_Y); });
207208
#endif
208209
}
209210
else {
210211
#if ENABLED(DELTA)
211212
ACTION_ITEM(MSG_FREE_XY, []{ line_to_z(delta_clip_start_height); ui.synchronize(); });
212213
#endif
213214
}
214-
#if HAS_Z_AXIS
215-
#define _AXIS_MOVE(N) SUBMENU_N(N, MSG_MOVE_N, []{ _menu_move_distance(AxisEnum(N), []{ lcd_move_axis(AxisEnum(N)); }); });
216-
REPEAT_S(2, NUM_AXES, _AXIS_MOVE);
217-
#endif
215+
#define _SUBMENU_MOVE(N) SUBMENU_N(_AXIS(N), MSG_MOVE_N, []{ _menu_move_distance(_AXIS(N), lcd_move_##N); });
216+
MAP(_SUBMENU_MOVE, LIST_N(SUB2(NUM_AXES), Z, I, J, K, U, V, W));
218217
}
219218
else
220219
GCODES_ITEM(MSG_AUTO_HOME, FPSTR(G28_STR));
@@ -260,7 +259,7 @@ void menu_move() {
260259
// The current extruder
261260
SUBMENU(MSG_MOVE_E, _menu_move_distance_e_maybe);
262261

263-
#define SUBMENU_MOVE_E(N) SUBMENU_N(N, MSG_MOVE_EN, []{ _menu_move_distance(E_AXIS, []{ lcd_move_e(N); }, N); });
262+
#define SUBMENU_MOVE_E(N) SUBMENU_N(N, MSG_MOVE_EN, []{ _menu_move_distance(E_AXIS, []{ lcd_move_E(N); }, N); });
264263

265264
#if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
266265

0 commit comments

Comments
 (0)