From 1b6b1f0af066bf4e22357790e4fb5568b19bf118 Mon Sep 17 00:00:00 2001 From: philmoz Date: Tue, 21 Nov 2023 11:25:36 +1100 Subject: [PATCH] fix(color): `TELE` navigation issue when editing top bar widgets (#4344) --- radio/src/gui/colorlcd/screen_user_interface.cpp | 3 +-- radio/src/gui/colorlcd/topbar.cpp | 16 ++++++++++++++++ radio/src/gui/colorlcd/topbar.h | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/colorlcd/screen_user_interface.cpp b/radio/src/gui/colorlcd/screen_user_interface.cpp index b8922d707..ad7d216f7 100644 --- a/radio/src/gui/colorlcd/screen_user_interface.cpp +++ b/radio/src/gui/colorlcd/screen_user_interface.cpp @@ -136,9 +136,8 @@ void ScreenUserInterfacePage::build(FormWindow* window) auto line = window->newLine(&grid); new StaticText(line, rect_t{}, STR_TOP_BAR, 0, COLOR_THEME_PRIMARY1); - auto menu = this->menu; auto setupTopbarWidgets = new TextButton(line, rect_t{}, STR_SETUP_WIDGETS); - setupTopbarWidgets->setPressHandler([menu]() -> uint8_t { + setupTopbarWidgets->setPressHandler([=]() -> uint8_t { menu->deleteLater(); new SetupTopBarWidgetsPage(); return 0; diff --git a/radio/src/gui/colorlcd/topbar.cpp b/radio/src/gui/colorlcd/topbar.cpp index 1f1cd83b1..a88fbc283 100644 --- a/radio/src/gui/colorlcd/topbar.cpp +++ b/radio/src/gui/colorlcd/topbar.cpp @@ -87,3 +87,19 @@ void SetupTopBarWidgetsPage::deleteLater(bool detach, bool trash) storageDirty(EE_MODEL); } + +void SetupTopBarWidgetsPage::onEvent(event_t event) +{ +#if defined(HARDWARE_KEYS) + if (event == EVT_KEY_FIRST(KEY_PAGEUP) || event == EVT_KEY_FIRST(KEY_PAGEDN) || + event == EVT_KEY_FIRST(KEY_SYS) || event == EVT_KEY_FIRST(KEY_MODEL)) { + killEvents(event); + } else if (event == EVT_KEY_FIRST(KEY_TELE)) { + onCancel(); + } else { + FormWindow::onEvent(event); + } +#else + FormWindow::onEvent(event); +#endif +} diff --git a/radio/src/gui/colorlcd/topbar.h b/radio/src/gui/colorlcd/topbar.h index 7deee38e1..8f17d3338 100644 --- a/radio/src/gui/colorlcd/topbar.h +++ b/radio/src/gui/colorlcd/topbar.h @@ -48,5 +48,6 @@ class SetupTopBarWidgetsPage : public FormWindow void onClicked() override; void onCancel() override; + void onEvent(event_t event) override; void deleteLater(bool detach = true, bool trash = true) override; };