Fix, clarify LCD_TIMEOUT_TO_STATUS

Replaces #17887

Co-Authored-By: Daniel Callander <knifa@users.noreply.github.com>
This commit is contained in:
Scott Lahteine 2020-05-06 03:34:05 -05:00
parent 1aa9d44783
commit 7c26a54d3f
4 changed files with 14 additions and 10 deletions

View file

@ -46,7 +46,7 @@ bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t
return false;
}
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
if (EventLoop::get_pressed_tag() != 0) {
reset_menu_timeout();
}
@ -66,7 +66,7 @@ bool BaseScreen::buttonStyleCallback(CommandProcessor &cmd, uint8_t tag, uint8_t
}
void BaseScreen::onIdle() {
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
if ((millis() - last_interaction) > LCD_TIMEOUT_TO_STATUS) {
reset_menu_timeout();
#if ENABLED(TOUCH_UI_DEBUG)
@ -78,12 +78,12 @@ void BaseScreen::onIdle() {
}
void BaseScreen::reset_menu_timeout() {
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
last_interaction = millis();
#endif
}
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
uint32_t BaseScreen::last_interaction;
#endif

View file

@ -103,7 +103,7 @@ enum {
class BaseScreen : public UIScreen {
protected:
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
static uint32_t last_interaction;
#endif

View file

@ -121,7 +121,7 @@ MarlinUI ui;
#endif
#endif
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS > 0
bool MarlinUI::defer_return_to_status;
#endif
@ -732,7 +732,7 @@ void MarlinUI::update() {
static uint16_t max_display_update_time = 0;
millis_t ms = millis();
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS > 0
static millis_t return_to_status_ms = 0;
#define RESET_STATUS_TIMEOUT() (return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS)
#else
@ -967,7 +967,7 @@ void MarlinUI::update() {
NOLESS(max_display_update_time, millis() - ms);
}
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS
#if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS > 0
// Return to Status Screen after a timeout
if (on_status_screen() || defer_return_to_status)
RESET_STATUS_TIMEOUT();

View file

@ -508,7 +508,11 @@ public:
#endif
FORCE_INLINE static void defer_status_screen(const bool defer=true) {
TERN(LCD_TIMEOUT_TO_STATUS, defer_return_to_status = defer, UNUSED(defer));
#if LCD_TIMEOUT_TO_STATUS > 0
defer_return_to_status = defer;
#else
UNUSED(defer);
#endif
}
static inline void goto_previous_screen_no_defer() {
@ -612,7 +616,7 @@ private:
#if HAS_SPI_LCD
#if HAS_LCD_MENU
#if LCD_TIMEOUT_TO_STATUS
#if LCD_TIMEOUT_TO_STATUS > 0
static bool defer_return_to_status;
#else
static constexpr bool defer_return_to_status = false;