Fix Color UI external_control, wait_for_release (#19771)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
2ecc3bb560
commit
060b2f4989
|
@ -40,7 +40,7 @@ int16_t Touch::x, Touch::y;
|
||||||
touch_control_t Touch::controls[];
|
touch_control_t Touch::controls[];
|
||||||
touch_control_t *Touch::current_control;
|
touch_control_t *Touch::current_control;
|
||||||
uint16_t Touch::controls_count;
|
uint16_t Touch::controls_count;
|
||||||
millis_t Touch::now = 0;
|
millis_t Touch::last_touch_ms = 0;
|
||||||
millis_t Touch::time_to_hold;
|
millis_t Touch::time_to_hold;
|
||||||
millis_t Touch::repeat_delay;
|
millis_t Touch::repeat_delay;
|
||||||
millis_t Touch::touch_time;
|
millis_t Touch::touch_time;
|
||||||
|
@ -79,8 +79,10 @@ void Touch::idle() {
|
||||||
|
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
|
|
||||||
if (now == millis()) return;
|
// Return if Touch::idle is called within the same millisecond
|
||||||
now = millis();
|
const millis_t now = millis();
|
||||||
|
if (last_touch_ms == now) return;
|
||||||
|
last_touch_ms = now;
|
||||||
|
|
||||||
if (get_point(&_x, &_y)) {
|
if (get_point(&_x, &_y)) {
|
||||||
#if HAS_RESUME_CONTINUE
|
#if HAS_RESUME_CONTINUE
|
||||||
|
@ -88,24 +90,25 @@ void Touch::idle() {
|
||||||
if (wait_for_user) {
|
if (wait_for_user) {
|
||||||
touch_control_type = CLICK;
|
touch_control_type = CLICK;
|
||||||
ui.lcd_clicked = true;
|
ui.lcd_clicked = true;
|
||||||
|
if (ui.external_control) wait_for_user = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if LCD_TIMEOUT_TO_STATUS
|
#if LCD_TIMEOUT_TO_STATUS
|
||||||
ui.return_to_status_ms = now + LCD_TIMEOUT_TO_STATUS;
|
ui.return_to_status_ms = last_touch_ms + LCD_TIMEOUT_TO_STATUS;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (touch_time) {
|
if (touch_time) {
|
||||||
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
||||||
if (touch_control_type == NONE && ELAPSED(now, touch_time + TOUCH_SCREEN_HOLD_TO_CALIBRATE_MS) && ui.on_status_screen())
|
if (touch_control_type == NONE && ELAPSED(last_touch_ms, touch_time + TOUCH_SCREEN_HOLD_TO_CALIBRATE_MS) && ui.on_status_screen())
|
||||||
ui.goto_screen(touch_screen_calibration);
|
ui.goto_screen(touch_screen_calibration);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time_to_hold == 0) time_to_hold = now + MINIMUM_HOLD_TIME;
|
if (time_to_hold == 0) time_to_hold = last_touch_ms + MINIMUM_HOLD_TIME;
|
||||||
if (PENDING(now, time_to_hold)) return;
|
if (PENDING(last_touch_ms, time_to_hold)) return;
|
||||||
|
|
||||||
if (x != 0 && y != 0) {
|
if (x != 0 && y != 0) {
|
||||||
if (current_control) {
|
if (current_control) {
|
||||||
|
@ -131,7 +134,7 @@ void Touch::idle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_control == NULL)
|
if (current_control == NULL)
|
||||||
touch_time = now;
|
touch_time = last_touch_ms;
|
||||||
}
|
}
|
||||||
x = _x;
|
x = _x;
|
||||||
y = _y;
|
y = _y;
|
||||||
|
@ -284,7 +287,7 @@ void Touch::hold(touch_control_t *control, millis_t delay) {
|
||||||
current_control = control;
|
current_control = control;
|
||||||
if (delay) {
|
if (delay) {
|
||||||
repeat_delay = delay > MIN_REPEAT_DELAY ? delay : MIN_REPEAT_DELAY;
|
repeat_delay = delay > MIN_REPEAT_DELAY ? delay : MIN_REPEAT_DELAY;
|
||||||
time_to_hold = now + repeat_delay;
|
time_to_hold = last_touch_ms + repeat_delay;
|
||||||
}
|
}
|
||||||
ui.refresh();
|
ui.refresh();
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,13 @@ class Touch {
|
||||||
static void reset() { controls_count = 0; touch_time = -1; current_control = NULL; }
|
static void reset() { controls_count = 0; touch_time = -1; current_control = NULL; }
|
||||||
static void clear() { controls_count = 0; }
|
static void clear() { controls_count = 0; }
|
||||||
static void idle();
|
static void idle();
|
||||||
static bool is_clicked() { return touch_control_type == CLICK; }
|
static bool is_clicked() {
|
||||||
|
if (touch_control_type == CLICK) {
|
||||||
|
touch_control_type = NONE;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
static void disable() { enabled = false; }
|
static void disable() { enabled = false; }
|
||||||
static void enable() { enabled = true; }
|
static void enable() { enabled = true; }
|
||||||
|
|
||||||
|
|
|
@ -1478,10 +1478,6 @@ void MarlinUI::update() {
|
||||||
set_status_P(msg, -1);
|
set_status_P(msg, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(SDSUPPORT)
|
|
||||||
extern bool wait_for_user, wait_for_heatup;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void MarlinUI::abort_print() {
|
void MarlinUI::abort_print() {
|
||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
wait_for_heatup = wait_for_user = false;
|
wait_for_heatup = wait_for_user = false;
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "../gcode/gcode.h"
|
#include "../gcode/gcode.h"
|
||||||
#include "../lcd/ultralcd.h"
|
#include "../lcd/ultralcd.h"
|
||||||
|
|
||||||
#include "../MarlinCore.h" // for stop(), disable_e_steppers, wait_for_user
|
#include "../MarlinCore.h" // for stop(), disable_e_steppers
|
||||||
|
|
||||||
#if HAS_LEVELING
|
#if HAS_LEVELING
|
||||||
#include "../feature/bedlevel/bedlevel.h"
|
#include "../feature/bedlevel/bedlevel.h"
|
||||||
|
|
Loading…
Reference in a new issue