From 96d6fd2791eb91e685b75e2bb30b6439259114ba Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 8 Aug 2022 14:24:35 +0200 Subject: [PATCH] Revert "io/router: [API] don't emit Enter and Leave events for touch input" This reverts commit cd0c9dab9fcd2dd70f9f900f480473879d16f683. It turns out that Enter/Leave is important for cancelling press-then-release-outside for clickables. Signed-off-by: Elias Naur --- io/router/pointer.go | 46 +++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/io/router/pointer.go b/io/router/pointer.go index a7386049..5d6d6296 100644 --- a/io/router/pointer.go +++ b/io/router/pointer.go @@ -770,32 +770,30 @@ func (q *pointerQueue) deliverEnterLeaveEvents(p *pointerInfo, events *handlerEv p.handlers = append(p.handlers[:0], hits...) } } - if e.Source == pointer.Mouse { - // Deliver Leave events. - for _, k := range p.entered { - if _, found := searchTag(hits, k); found { - continue - } - h := q.handlers[k] - e.Type = pointer.Leave - - if e.Type&h.types != 0 { - e.Position = q.invTransform(h.area, e.Position) - events.Add(k, e) - } + // Deliver Leave events. + for _, k := range p.entered { + if _, found := searchTag(hits, k); found { + continue } - // Deliver Enter events. - for _, k := range hits { - h := q.handlers[k] - if _, found := searchTag(p.entered, k); found { - continue - } - e.Type = pointer.Enter + h := q.handlers[k] + e.Type = pointer.Leave - if e.Type&h.types != 0 { - e.Position = q.invTransform(h.area, e.Position) - events.Add(k, e) - } + if e.Type&h.types != 0 { + e.Position = q.invTransform(h.area, e.Position) + events.Add(k, e) + } + } + // Deliver Enter events. + for _, k := range hits { + h := q.handlers[k] + if _, found := searchTag(p.entered, k); found { + continue + } + e.Type = pointer.Enter + + if e.Type&h.types != 0 { + e.Position = q.invTransform(h.area, e.Position) + events.Add(k, e) } } p.entered = append(p.entered[:0], hits...)