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.
This commit is contained in:
parent
6376c539ed
commit
c9df881066
1 changed files with 7 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue