From 61700b56b60aaaa370aaa5de986eb3d052c1607c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 6 May 2019 09:56:01 +0200 Subject: [PATCH] Register popup fix --- radio/src/gui/128x64/model_setup.cpp | 1 + radio/src/gui/128x64/radio_setup.cpp | 2 +- radio/src/gui/212x64/radio_setup.cpp | 2 +- radio/src/gui/480x272/menus.cpp | 2 +- radio/src/gui/480x272/popups.cpp | 2 +- radio/src/gui/480x272/radio_setup.cpp | 6 +++--- radio/src/gui/common/stdlcd/popups.cpp | 2 +- radio/src/gui/common/stdlcd/popups.h | 4 ++++ radio/src/gui/common/stdlcd/view_text.cpp | 2 +- radio/src/keys.cpp | 9 ++++++++- radio/src/keys.h | 6 ++---- radio/src/opentx.cpp | 2 +- radio/src/switches.cpp | 2 +- 13 files changed, 26 insertions(+), 16 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 39bbe2baf..969ecea50 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -498,6 +498,7 @@ void runPopupRegister(event_t event) void startRegisterDialog(uint8_t module) { memclear(&reusableBuffer.moduleSetup.pxx2, sizeof(reusableBuffer.moduleSetup.pxx2)); + reusableBuffer.moduleSetup.pxx2.registerPopupVerticalPosition = ITEM_REGISTER_BUTTONS; moduleState[module].mode = MODULE_MODE_REGISTER; s_editMode = 0; POPUP_INPUT("", runPopupRegister); diff --git a/radio/src/gui/128x64/radio_setup.cpp b/radio/src/gui/128x64/radio_setup.cpp index e2e157f42..3f890d678 100644 --- a/radio/src/gui/128x64/radio_setup.cpp +++ b/radio/src/gui/128x64/radio_setup.cpp @@ -634,7 +634,7 @@ void menuRadioSetup(event_t event) g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); - clearKeyEvents(); + waitKeysReleased(); } MOVE_CURSOR_FROM_HERE(); break; diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index e5df3c3cd..b8435c069 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -502,7 +502,7 @@ void menuRadioSetup(event_t event) g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); - clearKeyEvents(); + waitKeysReleased(); } break; } diff --git a/radio/src/gui/480x272/menus.cpp b/radio/src/gui/480x272/menus.cpp index 498f39191..c1b507930 100644 --- a/radio/src/gui/480x272/menus.cpp +++ b/radio/src/gui/480x272/menus.cpp @@ -86,7 +86,7 @@ void readModelNotes() strcpy(buf, TEXT_EXT); } - clearKeyEvents(); + waitKeysReleased(); event_t event = EVT_ENTRY; while (event != EVT_KEY_FIRST(KEY_EXIT)) { lcdRefreshWait(); diff --git a/radio/src/gui/480x272/popups.cpp b/radio/src/gui/480x272/popups.cpp index 89ad61f25..e33ba36d0 100644 --- a/radio/src/gui/480x272/popups.cpp +++ b/radio/src/gui/480x272/popups.cpp @@ -61,7 +61,7 @@ void showAlertBox(const char * title, const char * text, const char * action, ui AUDIO_ERROR_MESSAGE(sound); lcdRefresh(); lcdSetContrast(); - clearKeyEvents(); + waitKeysReleased(); backlightOn(); checkBacklight(); } diff --git a/radio/src/gui/480x272/radio_setup.cpp b/radio/src/gui/480x272/radio_setup.cpp index 6a3785593..672577f63 100644 --- a/radio/src/gui/480x272/radio_setup.cpp +++ b/radio/src/gui/480x272/radio_setup.cpp @@ -440,8 +440,8 @@ bool menuRadioSetup(event_t event) else { g_eeGeneral.fai = editCheckBox(g_eeGeneral.fai, RADIO_SETUP_2ND_COLUMN, y, attr, event); if (attr && checkIncDec_Ret) { - g_eeGeneral.fai = false; - POPUP_CONFIRMATION("FAI mode?"); + g_eeGeneral.fai = false; + POPUP_CONFIRMATION("FAI mode?"); } } break; @@ -489,7 +489,7 @@ bool menuRadioSetup(event_t event) g_eeGeneral.stickMode = reusableBuffer.generalSettings.stickMode; checkTHR(); resumePulses(); - clearKeyEvents(); + waitKeysReleased(); } break; } diff --git a/radio/src/gui/common/stdlcd/popups.cpp b/radio/src/gui/common/stdlcd/popups.cpp index 7d0bb8f39..6c86dff68 100644 --- a/radio/src/gui/common/stdlcd/popups.cpp +++ b/radio/src/gui/common/stdlcd/popups.cpp @@ -226,7 +226,7 @@ void showAlertBox(const char * title, const char * text, const char * action , u AUDIO_ERROR_MESSAGE(sound); lcdRefresh(); lcdSetContrast(); - clearKeyEvents(); + waitKeysReleased(); backlightOn(); checkBacklight(); } diff --git a/radio/src/gui/common/stdlcd/popups.h b/radio/src/gui/common/stdlcd/popups.h index 4ba6e8b14..f5c8ef386 100644 --- a/radio/src/gui/common/stdlcd/popups.h +++ b/radio/src/gui/common/stdlcd/popups.h @@ -91,6 +91,7 @@ enum inline void POPUP_INFORMATION(const char * s) { + killAllEvents(); warningText = s; warningInfoText = nullptr; warningType = WARNING_TYPE_INFO; @@ -99,6 +100,7 @@ enum inline void POPUP_WARNING(const char * s) { + killAllEvents(); warningText = s; warningInfoText = nullptr; warningType = WARNING_TYPE_ASTERISK; @@ -107,6 +109,7 @@ enum inline void POPUP_CONFIRMATION(const char * s, PopupMenuHandler handler) { + killAllEvents(); warningText = s; warningInfoText = nullptr; warningType = WARNING_TYPE_CONFIRM; @@ -116,6 +119,7 @@ enum inline void POPUP_INPUT(const char * s, PopupFunc func) { + killAllEvents(); warningText = s; warningInfoText = nullptr; warningType = WARNING_TYPE_INPUT; diff --git a/radio/src/gui/common/stdlcd/view_text.cpp b/radio/src/gui/common/stdlcd/view_text.cpp index 9f89f822b..0a88cae4a 100644 --- a/radio/src/gui/common/stdlcd/view_text.cpp +++ b/radio/src/gui/common/stdlcd/view_text.cpp @@ -110,7 +110,7 @@ void readModelNotes() char *buf = strcat_modelname(&s_text_file[sizeof(MODELS_PATH)], g_eeGeneral.currModel); strcpy(buf, TEXT_EXT); - clearKeyEvents(); + waitKeysReleased(); event_t event = EVT_ENTRY; while (event != EVT_KEY_BREAK(KEY_EXIT)) { lcdRefreshWait(); diff --git a/radio/src/keys.cpp b/radio/src/keys.cpp index b68504a92..227259c4b 100644 --- a/radio/src/keys.cpp +++ b/radio/src/keys.cpp @@ -169,7 +169,14 @@ void killEvents(event_t event) } } -bool clearKeyEvents() +void killAllEvents() +{ + for (uint8_t key = 0; key < DIM(keys); key++) { + keys[key].killEvents(); + } +} + +bool waitKeysReleased() { #if defined(PCBSKY9X) RTOS_WAIT_MS(200); // 200ms diff --git a/radio/src/keys.h b/radio/src/keys.h index 8c2983637..90bf81309 100644 --- a/radio/src/keys.h +++ b/radio/src/keys.h @@ -113,11 +113,9 @@ inline void putEvent(event_t evt) void pauseEvents(event_t event); void killEvents(event_t event); - -bool clearKeyEvents(); +void killAllEvents(); +bool waitKeysReleased(); event_t getEvent(bool trim=false); bool keyDown(); - - #endif // _KEYS_H_ diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index ba24b40fe..5031a1a6e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -873,7 +873,7 @@ void checkAll() readModelNotes(); } - if (!clearKeyEvents()) { + if (!waitKeysReleased()) { showMessageBox(STR_KEYSTUCK); tmr10ms_t tgtime = get_tmr10ms() + 500; while (tgtime != get_tmr10ms()) { diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 54d9bc569..b4ef94d1a 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -737,7 +737,7 @@ void checkSwitches() lcdRefresh(); lcdSetContrast(); - clearKeyEvents(); + waitKeysReleased(); last_bad_switches = switches_states; }