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)
}
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) {
+1 -5
View File
@@ -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: