From 8a196f59822458ce77342e569d54c4151cc73edb Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 10 Mar 2021 09:41:37 +0100 Subject: [PATCH] Allow ModalWindows not to be closed when touching outside --- radio/src/thirdparty/libopenui/src/choice.h | 2 +- radio/src/thirdparty/libopenui/src/menu.cpp | 2 +- radio/src/thirdparty/libopenui/src/menu.h | 4 ++-- radio/src/thirdparty/libopenui/src/modal_window.cpp | 5 +++-- radio/src/thirdparty/libopenui/src/modal_window.h | 10 +++++----- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/choice.h b/radio/src/thirdparty/libopenui/src/choice.h index 9b606fb78..a92767ddd 100644 --- a/radio/src/thirdparty/libopenui/src/choice.h +++ b/radio/src/thirdparty/libopenui/src/choice.h @@ -45,7 +45,7 @@ class ChoiceBase : public FormField ChoiceType type; }; -class Choice : public ChoiceBase { +class Choice: public ChoiceBase { public: Choice(FormGroup * parent, const rect_t & rect, int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); Choice(FormGroup * parent, const rect_t & rect, std::vector values, int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); diff --git a/radio/src/thirdparty/libopenui/src/menu.cpp b/radio/src/thirdparty/libopenui/src/menu.cpp index 22b5e3c0c..3258d429c 100644 --- a/radio/src/thirdparty/libopenui/src/menu.cpp +++ b/radio/src/thirdparty/libopenui/src/menu.cpp @@ -154,7 +154,7 @@ void MenuWindowContent::paint(BitmapBuffer * dc) } Menu::Menu(Window * parent, bool multiple): - ModalWindow(parent), + ModalWindow(parent, true), content(createMenuWindow(this)), multiple(multiple) { diff --git a/radio/src/thirdparty/libopenui/src/menu.h b/radio/src/thirdparty/libopenui/src/menu.h index de9c65a36..b93486170 100644 --- a/radio/src/thirdparty/libopenui/src/menu.h +++ b/radio/src/thirdparty/libopenui/src/menu.h @@ -27,13 +27,13 @@ class Menu; class MenuWindowContent; -class MenuBody : public Window +class MenuBody: public Window { friend class MenuWindowContent; friend class Menu; class MenuLine { - friend class MenuBody; + friend class MenuBody; public: MenuLine(std::string text, std::function onPress, std::function isChecked): diff --git a/radio/src/thirdparty/libopenui/src/modal_window.cpp b/radio/src/thirdparty/libopenui/src/modal_window.cpp index 5ddf49cc9..14c6888e2 100644 --- a/radio/src/thirdparty/libopenui/src/modal_window.cpp +++ b/radio/src/thirdparty/libopenui/src/modal_window.cpp @@ -22,8 +22,9 @@ #include "font.h" #include "layer.h" -ModalWindow::ModalWindow(Window * parent): - Window(parent->getFullScreenWindow(), {0, 0, LCD_W, LCD_H}) +ModalWindow::ModalWindow(Window * parent, bool closeWhenClickOutside): + Window(parent->getFullScreenWindow(), {0, 0, LCD_W, LCD_H}), + closeWhenClickOutside(closeWhenClickOutside) { Layer::push(this); } diff --git a/radio/src/thirdparty/libopenui/src/modal_window.h b/radio/src/thirdparty/libopenui/src/modal_window.h index 75fd1b8ff..e4580e689 100644 --- a/radio/src/thirdparty/libopenui/src/modal_window.h +++ b/radio/src/thirdparty/libopenui/src/modal_window.h @@ -24,7 +24,7 @@ class ModalWindow: public Window { public: - explicit ModalWindow(Window * parent); + explicit ModalWindow(Window * parent, bool closeWhenClickOutside = false); #if defined(DEBUG_WINDOWS) std::string getName() const override @@ -45,7 +45,7 @@ class ModalWindow: public Window bool onTouchEnd(coord_t x, coord_t y) override { - if (!Window::onTouchEnd(x, y) && closeAllowed) { + if (!Window::onTouchEnd(x, y) && closeWhenClickOutside) { onKeyPress(); deleteLater(); } @@ -59,13 +59,13 @@ class ModalWindow: public Window } #endif - void setCloseAllowed(bool value = true) + void setCloseWhenClickOutside(bool value = true) { - closeAllowed = value; + closeWhenClickOutside = value; } protected: - bool closeAllowed = true; + bool closeWhenClickOutside; }; class ModalWindowContent: public Window