io/router: remove redundant pointerHandler.transform field

The area transform is already stored in areaNode.

Updates gio#129

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-06-08 13:05:06 +02:00
parent 64a516d7c9
commit 35e477757b
+11 -10
View File
@@ -44,7 +44,6 @@ type pointerInfo struct {
type pointerHandler struct {
area int
active bool
transform op.TransformOp
wantsGrab bool
types pointer.Type
}
@@ -108,7 +107,6 @@ func (q *pointerQueue) collectHandlers(r *ops.Reader, events *handlerEvents, t o
}
h.active = true
h.area = area
h.transform = t
h.wantsGrab = op.Grab
h.types = op.Types
}
@@ -139,10 +137,18 @@ func (q *pointerQueue) opHit(handlers *[]event.Tag, pos f32.Point) {
}
}
func (q *pointerQueue) invTransform(areaIdx int, p f32.Point) f32.Point {
if areaIdx == -1 {
return p
}
return q.areas[areaIdx].trans.Invert().Transform(p)
}
func (q *pointerQueue) hit(areaIdx int, p f32.Point) bool {
for areaIdx != -1 {
a := &q.areas[areaIdx]
if !a.hit(p) {
p := a.trans.Invert().Transform(p)
if !a.area.Hit(p) {
return false
}
areaIdx = a.next
@@ -150,11 +156,6 @@ func (q *pointerQueue) hit(areaIdx int, p f32.Point) bool {
return true
}
func (a *areaNode) hit(p f32.Point) bool {
p = a.trans.Invert().Transform(p)
return a.area.Hit(p)
}
func (q *pointerQueue) init() {
if q.handlers == nil {
q.handlers = make(map[event.Tag]*pointerHandler)
@@ -272,7 +273,7 @@ func (q *pointerQueue) deliverEvent(p *pointerInfo, events *handlerEvents, e poi
e.Priority = pointer.Foremost
}
e.Position = h.transform.Invert().Transform(e.Position)
e.Position = q.invTransform(h.area, e.Position)
if e.Type&h.types == e.Type {
foremost = false
@@ -303,7 +304,7 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv
}
}
e.Position = h.transform.Invert().Transform(e.Position)
e.Position = q.invTransform(h.area, e.Position)
switch {
case !hit && entered != -1: