From ff95a1c0d93ead59c82872314d7c50cb0a9a8dcc Mon Sep 17 00:00:00 2001 From: Alvin Wong Date: Tue, 26 Jan 2021 16:32:54 +0800 Subject: [PATCH] Fix long-press on idle screen immediately changing temp. Fixes #825 --- source/Core/Threads/GUIThread.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index 5f1355bf..a142c8ba 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -184,13 +184,25 @@ static void gui_solderingTempAdjust() { currentTempTargetDegC = 0; uint32_t autoRepeatTimer = 0; uint8_t autoRepeatAcceleration = 0; + bool waitForRelease = false; + ButtonState buttons = getButtonState(); + if (buttons != BUTTON_NONE) { + // Temp adjust entered by long-pressing F button. + waitForRelease = true; + } for (;;) { OLED::setCursor(0, 0); OLED::clearScreen(); OLED::setFont(0); - ButtonState buttons = getButtonState(); - if (buttons) + buttons = getButtonState(); + if (buttons) { + if (waitForRelease) { + buttons = BUTTON_NONE; + } lastChange = xTaskGetTickCount(); + } else { + waitForRelease = false; + } switch (buttons) { case BUTTON_NONE: // stay