From 91f47be62ac85d59073bac03d9206579ab99a2ef Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Sun, 12 Jul 2026 14:04:49 -0700 Subject: [PATCH] fix: clear default clickable flag on temp_view/status_view to unblock mode toggle LVGL's base obj is clickable by default (lv_obj_create sets LV_OBJ_FLAG_CLICKABLE unconditionally). As full-screen, topmost siblings of mode_toggle, temp_view and status_view were silently capturing every tap over the toggle bar via lv_obj_hit_test before the touch search could reach mode_toggle underneath, even though they have no on_click of their own. Confirmed via generated C++ (lv_obj_remove_flag ... LV_OBJ_FLAG_CLICKABLE) and hardware testing. --- firmware/components/display-classic.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/firmware/components/display-classic.yaml b/firmware/components/display-classic.yaml index 36e9afd..9c88272 100644 --- a/firmware/components/display-classic.yaml +++ b/firmware/components/display-classic.yaml @@ -103,6 +103,13 @@ lvgl: outline_width: 0 scrollable: false bg_opa: transp + # LVGL's base obj is clickable by default (obj->flags = LV_OBJ_FLAG_CLICKABLE in + # lv_obj_create) and lv_obj_hit_test() requires that flag before checking geometry. + # Being a full-screen, topmost sibling of mode_toggle, this container was silently + # swallowing every tap over the toggle bar (no on_click, so nothing visibly happened) + # before the touch search could reach mode_toggle underneath — same z-order class of + # bug as the bg_opa fix above, but for touch capture instead of rendering. + clickable: false widgets: - arc: id: dial_bg_arc @@ -277,6 +284,7 @@ lvgl: outline_width: 0 scrollable: false bg_opa: transp + clickable: false # see temp_view comment above — same touch-capture fix layout: type: flex flex_flow: column