io/router: fix pointer positions of Enter and Leave events for nested areas

Before this change, inverse transformations of pointer positions would
stack up, leading to incorrect positions when an enter or leave event
was delivered to multiple areas.

Signed-off-by: Dominik Honnef <dominik@honnef.co>
This commit is contained in:
Dominik Honnef
2022-09-10 11:44:22 +02:00
committed by Elias Naur
parent dbf6429026
commit e37deed8bb
+2
View File
@@ -779,6 +779,7 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv
e.Type = pointer.Leave
if e.Type&h.types != 0 {
e := e
e.Position = q.invTransform(h.area, e.Position)
events.Add(k, e)
}
@@ -792,6 +793,7 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv
e.Type = pointer.Enter
if e.Type&h.types != 0 {
e := e
e.Position = q.invTransform(h.area, e.Position)
events.Add(k, e)
}