From 37ac75f3bb4c01e02c9b35027f09c534b1bc3f77 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 11 Jul 2019 23:43:42 +0200 Subject: [PATCH] ui/gesture: switch Click to return all events Simpler and more ergonomic for clients. Signed-off-by: Elias Naur --- ui/gesture/gestures.go | 9 +++++---- ui/text/editor.go | 6 +----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ui/gesture/gestures.go b/ui/gesture/gestures.go index 40cb0eb7..5b602a65 100644 --- a/ui/gesture/gestures.go +++ b/ui/gesture/gestures.go @@ -81,7 +81,8 @@ func (c *Click) Add(ops *ui.Ops) { op.Add(ops) } -func (c *Click) Next(q input.Events) (ClickEvent, bool) { +func (c *Click) Events(q input.Events) []ClickEvent { + var events []ClickEvent for _, evt := range q.Events(c) { e, ok := evt.(pointer.Event) if !ok { @@ -92,7 +93,7 @@ func (c *Click) Next(q input.Events) (ClickEvent, bool) { wasPressed := c.State == StatePressed c.State = StateNormal if wasPressed { - return ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source}, true + events = append(events, ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source}) } case pointer.Cancel: c.State = StateNormal @@ -101,7 +102,7 @@ func (c *Click) Next(q input.Events) (ClickEvent, bool) { break } c.State = StatePressed - return ClickEvent{Type: TypePress, Position: e.Position, Source: e.Source}, true + events = append(events, ClickEvent{Type: TypePress, Position: e.Position, Source: e.Source}) case pointer.Move: if c.State == StatePressed && !e.Hit { c.State = StateNormal @@ -110,7 +111,7 @@ func (c *Click) Next(q input.Events) (ClickEvent, bool) { } } } - return ClickEvent{}, false + return events } func (s *Scroll) Add(ops *ui.Ops) { diff --git a/ui/text/editor.go b/ui/text/editor.go index 21906092..9736672f 100644 --- a/ui/text/editor.go +++ b/ui/text/editor.go @@ -97,11 +97,7 @@ func (e *Editor) Next() (EditorEvent, bool) { e.scrollOff.Y += sdist soff = e.scrollOff.Y } - for { - evt, ok := e.clicker.Next(e.Inputs) - if !ok { - break - } + for _, evt := range e.clicker.Events(e.Inputs) { switch { case evt.Type == gesture.TypePress && evt.Source == pointer.Mouse, evt.Type == gesture.TypeClick && evt.Source == pointer.Touch: