mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 18:05:35 +00:00
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:
+11
-10
@@ -44,7 +44,6 @@ type pointerInfo struct {
|
|||||||
type pointerHandler struct {
|
type pointerHandler struct {
|
||||||
area int
|
area int
|
||||||
active bool
|
active bool
|
||||||
transform op.TransformOp
|
|
||||||
wantsGrab bool
|
wantsGrab bool
|
||||||
types pointer.Type
|
types pointer.Type
|
||||||
}
|
}
|
||||||
@@ -108,7 +107,6 @@ func (q *pointerQueue) collectHandlers(r *ops.Reader, events *handlerEvents, t o
|
|||||||
}
|
}
|
||||||
h.active = true
|
h.active = true
|
||||||
h.area = area
|
h.area = area
|
||||||
h.transform = t
|
|
||||||
h.wantsGrab = op.Grab
|
h.wantsGrab = op.Grab
|
||||||
h.types = op.Types
|
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 {
|
func (q *pointerQueue) hit(areaIdx int, p f32.Point) bool {
|
||||||
for areaIdx != -1 {
|
for areaIdx != -1 {
|
||||||
a := &q.areas[areaIdx]
|
a := &q.areas[areaIdx]
|
||||||
if !a.hit(p) {
|
p := a.trans.Invert().Transform(p)
|
||||||
|
if !a.area.Hit(p) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
areaIdx = a.next
|
areaIdx = a.next
|
||||||
@@ -150,11 +156,6 @@ func (q *pointerQueue) hit(areaIdx int, p f32.Point) bool {
|
|||||||
return true
|
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() {
|
func (q *pointerQueue) init() {
|
||||||
if q.handlers == nil {
|
if q.handlers == nil {
|
||||||
q.handlers = make(map[event.Tag]*pointerHandler)
|
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.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 {
|
if e.Type&h.types == e.Type {
|
||||||
foremost = false
|
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 {
|
switch {
|
||||||
case !hit && entered != -1:
|
case !hit && entered != -1:
|
||||||
|
|||||||
Reference in New Issue
Block a user