Skip to content

Commit 7776f8a

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 559b3f3 commit 7776f8a

File tree

7 files changed

+72
-24
lines changed

7 files changed

+72
-24
lines changed

Marlin/src/lcd/marlinui.cpp

+7-4
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

+8
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

+1-1
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

-2
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

+1-1
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

-2
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

+55-14
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
// "Motion" > "Move Axis" submenu
5151
//
5252

53-
void lcd_move_axis(const AxisEnum axis) {
53+
// TODO: Use substitution here with MSG_MOVE_N
54+
static void _lcd_move_xyz(FSTR_P const name, const AxisEnum axis) {
5455
if (ui.use_click()) return ui.goto_previous_screen_no_defer();
5556
if (ui.encoderPosition && !ui.manual_move.processing) {
5657
// Get motion limit from software endstops, if any
@@ -77,19 +78,41 @@ void lcd_move_axis(const AxisEnum 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);
80-
MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_N), ftostr63(imp_pos));
81+
MenuEditItemBase::draw_edit_screen(name, ftostr63(imp_pos));
8182
}
8283
else
83-
MenuEditItemBase::draw_edit_screen(GET_TEXT_F(MSG_MOVE_N), ui.manual_move.menu_scale >= 0.1f ? (LARGE_AREA_TEST ? ftostr51sign(pos) : ftostr41sign(pos)) : ftostr63(pos));
84+
MenuEditItemBase::draw_edit_screen(name, ui.manual_move.menu_scale >= 0.1f ? (LARGE_AREA_TEST ? ftostr51sign(pos) : ftostr41sign(pos)) : ftostr63(pos));
8485
}
8586
}
86-
87-
// Move Z easy accessor
88-
void lcd_move_z() { lcd_move_axis(Z_AXIS); }
87+
void lcd_move_X() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_X), X_AXIS); }
88+
#if HAS_Y_AXIS
89+
void lcd_move_Y() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Y), Y_AXIS); }
90+
#endif
91+
#if HAS_Z_AXIS
92+
void lcd_move_Z() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_Z), Z_AXIS); }
93+
#endif
94+
#if HAS_I_AXIS
95+
void lcd_move_I() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_I), I_AXIS); }
96+
#endif
97+
#if HAS_J_AXIS
98+
void lcd_move_J() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_J), J_AXIS); }
99+
#endif
100+
#if HAS_K_AXIS
101+
void lcd_move_K() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_K), K_AXIS); }
102+
#endif
103+
#if HAS_U_AXIS
104+
void lcd_move_U() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_U), U_AXIS); }
105+
#endif
106+
#if HAS_V_AXIS
107+
void lcd_move_V() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_V), V_AXIS); }
108+
#endif
109+
#if HAS_W_AXIS
110+
void lcd_move_W() { _lcd_move_xyz(GET_TEXT_F(MSG_MOVE_W), W_AXIS); }
111+
#endif
89112

90113
#if E_MANUAL
91114

92-
static void lcd_move_e(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
115+
static void lcd_move_E(TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
93116
if (ui.use_click()) return ui.goto_previous_screen_no_defer();
94117
if (ui.encoderPosition) {
95118
if (!ui.manual_move.processing) {
@@ -118,7 +141,7 @@ void lcd_move_z() { lcd_move_axis(Z_AXIS); }
118141

119142
void _goto_manual_move_z(const_float_t scale) {
120143
ui.manual_move.menu_scale = scale;
121-
ui.goto_screen(lcd_move_z);
144+
ui.goto_screen(lcd_move_Z);
122145
}
123146

124147
#endif
@@ -171,7 +194,7 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
171194
#if E_MANUAL
172195

173196
inline void _goto_menu_move_distance_e() {
174-
ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_e(); }); });
197+
ui.goto_screen([]{ _menu_move_distance(E_AXIS, []{ lcd_move_E(); }); });
175198
}
176199

177200
inline void _menu_move_distance_e_maybe() {
@@ -201,19 +224,37 @@ void menu_move() {
201224
// Move submenu for each axis
202225
if (NONE(IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed()) {
203226
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); }); });
227+
SUBMENU_N(X_AXIS, MSG_MOVE_N, []{ _menu_move_distance(X_AXIS, lcd_move_X); });
205228
#if HAS_Y_AXIS
206-
SUBMENU_N(Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Y_AXIS, []{ lcd_move_axis(Y_AXIS); }); });
229+
SUBMENU_N(Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Y_AXIS, lcd_move_Y); });
207230
#endif
208231
}
209232
else {
210233
#if ENABLED(DELTA)
211234
ACTION_ITEM(MSG_FREE_XY, []{ line_to_z(delta_clip_start_height); ui.synchronize(); });
212235
#endif
213236
}
237+
214238
#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);
239+
SUBMENU_N(Z_AXIS, MSG_MOVE_N, []{ _menu_move_distance(Z_AXIS, lcd_move_Z); });
240+
#endif
241+
#if HAS_I_AXIS
242+
SUBMENU_N(I_AXIS, MSG_MOVE_N, []{ _menu_move_distance(I_AXIS, lcd_move_I); });
243+
#endif
244+
#if HAS_J_AXIS
245+
SUBMENU_N(J_AXIS, MSG_MOVE_N, []{ _menu_move_distance(J_AXIS, lcd_move_J); });
246+
#endif
247+
#if HAS_K_AXIS
248+
SUBMENU_N(K_AXIS, MSG_MOVE_N, []{ _menu_move_distance(K_AXIS, lcd_move_K); });
249+
#endif
250+
#if HAS_U_AXIS
251+
SUBMENU_N(U_AXIS, MSG_MOVE_N, []{ _menu_move_distance(U_AXIS, lcd_move_U); });
252+
#endif
253+
#if HAS_V_AXIS
254+
SUBMENU_N(V_AXIS, MSG_MOVE_N, []{ _menu_move_distance(V_AXIS, lcd_move_V); });
255+
#endif
256+
#if HAS_W_AXIS
257+
SUBMENU_N(W_AXIS, MSG_MOVE_N, []{ _menu_move_distance(W_AXIS, lcd_move_W); });
217258
#endif
218259
}
219260
else
@@ -260,7 +301,7 @@ void menu_move() {
260301
// The current extruder
261302
SUBMENU(MSG_MOVE_E, _menu_move_distance_e_maybe);
262303

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

265306
#if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
266307

0 commit comments

Comments
 (0)