ui/gesture: convert Click to single step events for symmetry

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-06-22 17:33:29 +02:00
parent b94119d093
commit bebfd822d8
2 changed files with 12 additions and 8 deletions
+7 -7
View File
@@ -81,8 +81,7 @@ func (c *Click) Add(ops *ui.Ops) {
op.Add(ops)
}
func (c *Click) Update(q input.Events) []ClickEvent {
var events []ClickEvent
func (c *Click) Next(q input.Events) (ClickEvent, bool) {
for {
evt, ok := q.Next(c)
if !ok {
@@ -94,10 +93,11 @@ func (c *Click) Update(q input.Events) []ClickEvent {
}
switch e.Type {
case pointer.Release:
if c.State == StatePressed {
events = append(events, ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source})
}
wasPressed := c.State == StatePressed
c.State = StateNormal
if wasPressed {
return ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source}, true
}
case pointer.Cancel:
c.State = StateNormal
case pointer.Press:
@@ -105,7 +105,7 @@ func (c *Click) Update(q input.Events) []ClickEvent {
break
}
c.State = StatePressed
events = append(events, ClickEvent{Type: TypePress, Position: e.Position, Source: e.Source})
return ClickEvent{Type: TypePress, Position: e.Position, Source: e.Source}, true
case pointer.Move:
if c.State == StatePressed && !e.Hit {
c.State = StateNormal
@@ -114,7 +114,7 @@ func (c *Click) Update(q input.Events) []ClickEvent {
}
}
}
return events
return ClickEvent{}, false
}
func (s *Scroll) Add(ops *ui.Ops) {
+5 -1
View File
@@ -90,7 +90,11 @@ func (e *Editor) Next() (EditorEvent, bool) {
soff = e.scrollOff.Y
}
scrollTo := false
for _, evt := range e.clicker.Update(e.Inputs) {
for {
evt, ok := e.clicker.Next(e.Inputs)
if !ok {
break
}
switch {
case evt.Type == gesture.TypePress && evt.Source == pointer.Mouse,
evt.Type == gesture.TypeClick && evt.Source == pointer.Touch: