From 0568df1f99bbd83fc67a1e0132960399f4b98731 Mon Sep 17 00:00:00 2001 From: philmoz Date: Thu, 19 Dec 2024 11:35:52 +1100 Subject: [PATCH] fix(color): rotary encoder events not always working on some screens (#5714) Specifically, after having left screens with TableField focused --- radio/src/gui/colorlcd/libui/table.cpp | 10 ++++++++++ radio/src/gui/colorlcd/libui/table.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/radio/src/gui/colorlcd/libui/table.cpp b/radio/src/gui/colorlcd/libui/table.cpp index e4884ee98..83b296a86 100644 --- a/radio/src/gui/colorlcd/libui/table.cpp +++ b/radio/src/gui/colorlcd/libui/table.cpp @@ -320,3 +320,13 @@ void TableField::setAutoEdit() lv_group_set_editing(g, true); } } + +void TableField::deleteLater(bool detach, bool trash) +{ + if (!deleted()) + if (autoedit) { + lv_group_t* g = (lv_group_t*)lv_obj_get_group(lvobj); + lv_group_set_focus_cb(g, nullptr); + lv_group_set_editing(g, false); + } +} diff --git a/radio/src/gui/colorlcd/libui/table.h b/radio/src/gui/colorlcd/libui/table.h index d088e0618..1ad0bdc99 100644 --- a/radio/src/gui/colorlcd/libui/table.h +++ b/radio/src/gui/colorlcd/libui/table.h @@ -64,5 +64,7 @@ class TableField : public Window void onEvent(event_t event) override; bool onLongPress() override; + void deleteLater(bool detach = true, bool trash = true) override; + static void force_editing(lv_group_t* g) { lv_group_set_editing(g, true); } };