From 07a0f527d82fb85b7799fe85a28a0fcb8ea66f4e Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Sep 2019 20:30:27 +0200 Subject: [PATCH] Reset lcd_encoder_diff in lcd_show_fullscreen_message_yes_no_and_wait_P() also when it times out. --- Firmware/ultralcd.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8cd7eb0e0..1918df276 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3557,7 +3557,7 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow lcd_puts_P(PSTR(">")); lcd_puts_P(_T(MSG_NO)); } - bool yes = default_yes ? true : false; + int8_t retval = default_yes ? true : false; // Wait for user confirmation or a timeout. unsigned long previous_millis_cmd = _millis(); @@ -3566,24 +3566,27 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow KEEPALIVE_STATE(PAUSED_FOR_USER); for (;;) { if (allow_timeouting && _millis() - previous_millis_cmd > LCD_TIMEOUT_TO_STATUS) - return -1; + { + retval = -1; + break; + } manage_heater(); manage_inactivity(true); if (abs(enc_dif - lcd_encoder_diff) > 4) { lcd_set_cursor(0, 2); - if (enc_dif < lcd_encoder_diff && yes) { + if (enc_dif < lcd_encoder_diff && retval) { lcd_puts_P((PSTR(" "))); lcd_set_cursor(0, 3); lcd_puts_P((PSTR(">"))); - yes = false; + retval = 0; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } - else if (enc_dif > lcd_encoder_diff && !yes) { + else if (enc_dif > lcd_encoder_diff && !retval) { lcd_puts_P((PSTR(">"))); lcd_set_cursor(0, 3); lcd_puts_P((PSTR(" "))); - yes = true; + retval = 1; Sound_MakeSound(e_SOUND_TYPE_EncoderMove); } enc_dif = lcd_encoder_diff; @@ -3591,10 +3594,11 @@ int8_t lcd_show_fullscreen_message_yes_no_and_wait_P(const char *msg, bool allow if (lcd_clicked()) { Sound_MakeSound(e_SOUND_TYPE_ButtonEcho); KEEPALIVE_STATE(IN_HANDLER); - lcd_encoder_diff = 0; - return yes; + break; } } + lcd_encoder_diff = 0; + return retval; } void lcd_bed_calibration_show_result(BedSkewOffsetDetectionResultType result, uint8_t point_too_far_mask)