ui/gesture: switch Click to return all events

Simpler and more ergonomic for clients.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-11 23:43:42 +02:00
parent 1735d5ced8
commit 37ac75f3bb
2 changed files with 6 additions and 9 deletions
+5 -4
View File
@@ -81,7 +81,8 @@ func (c *Click) Add(ops *ui.Ops) {
op.Add(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) { for _, evt := range q.Events(c) {
e, ok := evt.(pointer.Event) e, ok := evt.(pointer.Event)
if !ok { if !ok {
@@ -92,7 +93,7 @@ func (c *Click) Next(q input.Events) (ClickEvent, bool) {
wasPressed := c.State == StatePressed wasPressed := c.State == StatePressed
c.State = StateNormal c.State = StateNormal
if wasPressed { 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: case pointer.Cancel:
c.State = StateNormal c.State = StateNormal
@@ -101,7 +102,7 @@ func (c *Click) Next(q input.Events) (ClickEvent, bool) {
break break
} }
c.State = StatePressed 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: case pointer.Move:
if c.State == StatePressed && !e.Hit { if c.State == StatePressed && !e.Hit {
c.State = StateNormal 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) { func (s *Scroll) Add(ops *ui.Ops) {
+1 -5
View File
@@ -97,11 +97,7 @@ func (e *Editor) Next() (EditorEvent, bool) {
e.scrollOff.Y += sdist e.scrollOff.Y += sdist
soff = e.scrollOff.Y soff = e.scrollOff.Y
} }
for { for _, evt := range e.clicker.Events(e.Inputs) {
evt, ok := e.clicker.Next(e.Inputs)
if !ok {
break
}
switch { switch {
case evt.Type == gesture.TypePress && evt.Source == pointer.Mouse, case evt.Type == gesture.TypePress && evt.Source == pointer.Mouse,
evt.Type == gesture.TypeClick && evt.Source == pointer.Touch: evt.Type == gesture.TypeClick && evt.Source == pointer.Touch: