Skip to content

Commit

Permalink
Fix Color UI external_control, wait_for_release (MarlinFirmware#19771)
Browse files Browse the repository at this point in the history
Co-authored-by: Scott Lahteine <[email protected]>
  • Loading branch information
2 people authored and Speaka committed Nov 2, 2020
1 parent f0fa035 commit 8862613
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 15 deletions.
21 changes: 12 additions & 9 deletions Marlin/src/lcd/tft/touch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ int16_t Touch::x, Touch::y;
touch_control_t Touch::controls[];
touch_control_t *Touch::current_control;
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::repeat_delay;
millis_t Touch::touch_time;
Expand Down Expand Up @@ -79,33 +79,36 @@ void Touch::idle() {

if (!enabled) return;

if (now == millis()) return;
now = millis();
// Return if Touch::idle is called within the same millisecond
const millis_t now = millis();
if (last_touch_ms == now) return;
last_touch_ms = now;

if (get_point(&_x, &_y)) {
#if HAS_RESUME_CONTINUE
// UI is waiting for a click anywhere?
if (wait_for_user) {
touch_control_type = CLICK;
ui.lcd_clicked = true;
if (ui.external_control) wait_for_user = false;
return;
}
#endif

#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

if (touch_time) {
#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);
#endif
return;
}

if (time_to_hold == 0) time_to_hold = now + MINIMUM_HOLD_TIME;
if (PENDING(now, time_to_hold)) return;
if (time_to_hold == 0) time_to_hold = last_touch_ms + MINIMUM_HOLD_TIME;
if (PENDING(last_touch_ms, time_to_hold)) return;

if (x != 0 && y != 0) {
if (current_control) {
Expand All @@ -131,7 +134,7 @@ void Touch::idle() {
}

if (current_control == NULL)
touch_time = now;
touch_time = last_touch_ms;
}
x = _x;
y = _y;
Expand Down Expand Up @@ -284,7 +287,7 @@ void Touch::hold(touch_control_t *control, millis_t delay) {
current_control = control;
if (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();
}
Expand Down
8 changes: 7 additions & 1 deletion Marlin/src/lcd/tft/touch.h
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,13 @@ class Touch {
static void reset() { controls_count = 0; touch_time = -1; current_control = NULL; }
static void clear() { controls_count = 0; }
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 enable() { enabled = true; }

Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/lcd/ultralcd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1478,10 +1478,6 @@ void MarlinUI::update() {
set_status_P(msg, -1);
}

#if ENABLED(SDSUPPORT)
extern bool wait_for_user, wait_for_heatup;
#endif

void MarlinUI::abort_print() {
#if ENABLED(SDSUPPORT)
wait_for_heatup = wait_for_user = false;
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/module/probe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
#include "../gcode/gcode.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
#include "../feature/bedlevel/bedlevel.h"
Expand Down

0 comments on commit 8862613

Please sign in to comment.