diff --git a/radio/src/gui/colorlcd/screen_user_interface.cpp b/radio/src/gui/colorlcd/screen_user_interface.cpp index b8922d707e1..ad7d216f708 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 1f1cd83b126..a88fbc283e6 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 7deee38e1d0..8f17d33385a 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; };