From d280d438c7b8632aaf2d79c0072a50319125262f Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sun, 7 Jun 2020 18:20:18 +0200 Subject: [PATCH] io/router: don't clear event queue before cancel events There may be unrelated events in the queue, so it's not appropriate to clear the queue just because an input Cancel event occurs. Signed-off-by: Elias Naur --- io/router/key.go | 2 +- io/router/pointer.go | 2 +- io/router/router.go | 6 ------ 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/io/router/key.go b/io/router/key.go index f4f796fe..a64544b2 100644 --- a/io/router/key.go +++ b/io/router/key.go @@ -116,7 +116,7 @@ loop: h = new(keyHandler) q.handlers[op.Tag] = h // Reset the handler on (each) first appearance. - events.Set(op.Tag, []event.Event{key.FocusEvent{Focus: false}}) + events.Add(op.Tag, key.FocusEvent{Focus: false}) } h.active = true case opconst.TypeHideInput: diff --git a/io/router/pointer.go b/io/router/pointer.go index 9afdb22d..c9037535 100644 --- a/io/router/pointer.go +++ b/io/router/pointer.go @@ -104,7 +104,7 @@ func (q *pointerQueue) collectHandlers(r *ops.Reader, events *handlerEvents, t o if !ok { h = new(pointerHandler) q.handlers[op.Tag] = h - events.Set(op.Tag, []event.Event{pointer.Event{Type: pointer.Cancel}}) + events.Add(op.Tag, pointer.Event{Type: pointer.Cancel}) } h.active = true h.area = area diff --git a/io/router/router.go b/io/router/router.go index 6bac40fc..d24d2146 100644 --- a/io/router/router.go +++ b/io/router/router.go @@ -137,12 +137,6 @@ func (h *handlerEvents) init() { } } -func (h *handlerEvents) Set(k event.Tag, evts []event.Event) { - h.init() - h.handlers[k] = evts - h.hadEvents = true -} - func (h *handlerEvents) Add(k event.Tag, e event.Event) { h.init() h.handlers[k] = append(h.handlers[k], e)