From c9df88106668fbf7962abd7ad05cddc3e91cadad Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Sun, 12 Jul 2026 16:26:51 -0700 Subject: [PATCH] revert: restore differing heat/cool arc radii, required for independent touch Making both arcs 400px (same-size rings, requested for visual alignment) broke independent dragging: LVGL's adv_hittest arc hit test only accepts touches within an arc's own ring band (radius - arc_width to radius, within its angular span), confirmed via lv_arc.c LV_EVENT_HIT_TEST. Two identical rings occupy the same band, so only the topmost (cool_arc) ever won the touch, confirmed on hardware. Reverting to 400px/360px nested rings restores independent heat/cool dragging; same-size same-position arcs are not achievable with LVGL's current hit-testing without a larger redesign. --- firmware/components/display-classic.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/firmware/components/display-classic.yaml b/firmware/components/display-classic.yaml index e8382de..167ff69 100644 --- a/firmware/components/display-classic.yaml +++ b/firmware/components/display-classic.yaml @@ -172,9 +172,13 @@ lvgl: id: cool_arc align: center y: -20 - width: 400px # same radius as heat_arc — concentric, same-size rings by request. - height: 400px # touch disambiguation is handled entirely by adv_hittest below, not - # by radius difference, so same-size rings still target correctly. + width: 360px # smaller radius than heat_arc (400px) so the two rings are physically + height: 360px # distinct. LVGL's adv_hittest arc hit test only accepts touches within + # the arc's own ring band (radius - arc_width to radius, in its angular + # span) — confirmed via lv_arc.c LV_EVENT_HIT_TEST. Same-radius arcs + # occupy an identical ring band, so adv_hittest alone CANNOT disambiguate + # them (verified on hardware: making both 400px left only the topmost, + # cool_arc, draggable). Differing radii are required, not optional. start_angle: 315 end_angle: 225 mode: REVERSE