fix(color): Close menu popup on main view when switching to other views (#3090)

This commit is contained in:
philmoz
2023-01-24 11:11:11 +10:00
committed by GitHub
parent 80f3cbe759
commit c2dff941d9
4 changed files with 23 additions and 5 deletions
+15 -3
View File
@@ -250,11 +250,13 @@ void ViewMain::onEvent(event_t event)
#if defined(HARDWARE_KEYS)
switch (event) {
case EVT_KEY_BREAK(KEY_MODEL):
if (viewMainMenu) viewMainMenu->onCancel();
new ModelMenu();
break;
case EVT_KEY_LONG(KEY_MODEL):
killEvents(KEY_MODEL);
if (viewMainMenu) viewMainMenu->onCancel();
new ModelLabelsWindow();
break;
@@ -263,10 +265,12 @@ void ViewMain::onEvent(event_t event)
// - use LONG for "Tools" page
//
case EVT_KEY_FIRST(KEY_RADIO):
if (viewMainMenu) viewMainMenu->onCancel();
new RadioMenu();
break;
case EVT_KEY_FIRST(KEY_TELEM):
if (viewMainMenu) viewMainMenu->onCancel();
new ScreenMenu();
break;
@@ -275,7 +279,10 @@ void ViewMain::onEvent(event_t event)
#else
case EVT_KEY_BREAK(KEY_PGDN):
#endif
if (!widget_select) nextMainView();
if (!widget_select) {
if (viewMainMenu) viewMainMenu->onCancel();
nextMainView();
}
break;
//TODO: these need to go away!
@@ -286,7 +293,10 @@ void ViewMain::onEvent(event_t event)
case EVT_KEY_LONG(KEY_PGDN):
#endif
killEvents(event);
if (!widget_select) previousMainView();
if (!widget_select) {
if (viewMainMenu) viewMainMenu->onCancel();
previousMainView();
}
break;
}
#endif
@@ -362,7 +372,9 @@ bool ViewMain::enableWidgetSelect(bool enable)
void ViewMain::openMenu()
{
new ViewMainMenu(this);
viewMainMenu = new ViewMainMenu(this, [=]() {
viewMainMenu = nullptr;
});
}
void ViewMain::paint(BitmapBuffer * dc)
+2
View File
@@ -29,6 +29,7 @@
class SetupWidgetsPage;
class SetupTopBarWidgetsPage;
class ViewMainMenu;
class ViewMain: public Window
{
@@ -89,6 +90,7 @@ class ViewMain: public Window
TopbarImpl* topbar = nullptr;
bool widget_select = false;
lv_timer_t* widget_select_timer = nullptr;
ViewMainMenu* viewMainMenu = nullptr;
void paint(BitmapBuffer * dc) override;
void deleteLater(bool detach = true, bool trash = true) override;
+4 -1
View File
@@ -33,9 +33,11 @@
#include "select_fab_carousel.h"
#include "view_text.h"
ViewMainMenu::ViewMainMenu(Window* parent) :
ViewMainMenu::ViewMainMenu(Window* parent, std::function<void()> closeHandler) :
Window(parent->getFullScreenWindow(), rect_t{})
{
this->closeHandler = std::move(closeHandler);
// Save focus
Layer::push(this);
@@ -131,6 +133,7 @@ void ViewMainMenu::paint(BitmapBuffer* dc)
void ViewMainMenu::deleteLater(bool detach, bool trash)
{
if (closeHandler) closeHandler();
Layer::pop(this);
Window::deleteLater(detach, trash);
}
+2 -1
View File
@@ -26,7 +26,7 @@
class ViewMainMenu : public Window
{
public:
ViewMainMenu(Window* parent);
ViewMainMenu(Window* parent, std::function<void()> closeHandler);
void onCancel() override;
void onClicked() override;
@@ -35,4 +35,5 @@ class ViewMainMenu : public Window
protected:
rect_t carouselRect;
std::function<void()> closeHandler = nullptr;
};