diff --git a/radio/src/thirdparty/libopenui/src/button.cpp b/radio/src/thirdparty/libopenui/src/button.cpp index c15f44dcb..feda35bfa 100644 --- a/radio/src/thirdparty/libopenui/src/button.cpp +++ b/radio/src/thirdparty/libopenui/src/button.cpp @@ -45,11 +45,11 @@ Button::Button(Window* parent, const rect_t& rect, void Button::onPress() { bool check = (pressHandler && pressHandler()); - windowFlags = check ? windowFlags | BUTTON_CHECKED : windowFlags & ~BUTTON_CHECKED; - if(lvobj == nullptr) - return; + windowFlags = + check ? windowFlags | BUTTON_CHECKED : windowFlags & ~BUTTON_CHECKED; + if (lvobj == nullptr) return; - if (! (windowFlags & BUTTON_CHECKED)) + if (!(windowFlags & BUTTON_CHECKED)) lv_obj_clear_state(lvobj, LV_STATE_CHECKED); else lv_obj_add_state(lvobj, LV_STATE_CHECKED); diff --git a/radio/src/thirdparty/libopenui/src/button.h b/radio/src/thirdparty/libopenui/src/button.h index b06560f24..dcd9a476b 100644 --- a/radio/src/thirdparty/libopenui/src/button.h +++ b/radio/src/thirdparty/libopenui/src/button.h @@ -81,7 +81,7 @@ class Button: public FormField std::function pressHandler; std::function checkHandler; - void onPress(); + virtual void onPress(); }; diff --git a/radio/src/thirdparty/libopenui/src/form.cpp b/radio/src/thirdparty/libopenui/src/form.cpp index 5bedb2009..0a8f7fa91 100644 --- a/radio/src/thirdparty/libopenui/src/form.cpp +++ b/radio/src/thirdparty/libopenui/src/form.cpp @@ -88,12 +88,9 @@ void FormField::setFocus(uint8_t flag, Window * from) { if (enabled) { Window::setFocus(flag, from); -// if(lvobj != nullptr) -// { -// lv_group_focus_freeze(inputGroup, false); -// lv_group_focus_obj(lvobj); -// lv_group_focus_freeze(inputGroup, true); -// } + if(lvobj != nullptr) { + lv_group_focus_obj(lvobj); + } } else { if (flag == SET_FOCUS_BACKWARD) { diff --git a/radio/src/thirdparty/libopenui/src/menu.cpp b/radio/src/thirdparty/libopenui/src/menu.cpp index 05ab48b5d..a888a2679 100644 --- a/radio/src/thirdparty/libopenui/src/menu.cpp +++ b/radio/src/thirdparty/libopenui/src/menu.cpp @@ -134,6 +134,7 @@ void MenuBody::setIndex(int index) lv_obj_add_state(btn, LV_STATE_CHECKED); lv_obj_add_state(btn, LV_STATE_FOCUS_KEY); lv_obj_scroll_to_view(btn, LV_ANIM_OFF); + lv_group_focus_obj(btn); } } } diff --git a/radio/src/thirdparty/libopenui/src/modal_window.cpp b/radio/src/thirdparty/libopenui/src/modal_window.cpp index 4be831de4..270522bcf 100644 --- a/radio/src/thirdparty/libopenui/src/modal_window.cpp +++ b/radio/src/thirdparty/libopenui/src/modal_window.cpp @@ -35,10 +35,9 @@ void ModalWindow::deleteLater(bool detach, bool trash) { if (_deleted) return; - - Layer::pop(this); Window::deleteLater(detach, trash); + Layer::pop(this); } #if defined(HARDWARE_TOUCH) diff --git a/radio/src/thirdparty/libopenui/src/window.cpp b/radio/src/thirdparty/libopenui/src/window.cpp index b5b4ef9ad..eb9456b40 100644 --- a/radio/src/thirdparty/libopenui/src/window.cpp +++ b/radio/src/thirdparty/libopenui/src/window.cpp @@ -296,6 +296,7 @@ void Window::clearLvgl() } lv_obj_set_user_data(lvobj, nullptr); + lv_group_remove_obj(lvobj); lvobj = nullptr; }