mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 01:45:36 +00:00
ui/gesture: convert Click to single step events for symmetry
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -81,8 +81,7 @@ func (c *Click) Add(ops *ui.Ops) {
|
|||||||
op.Add(ops)
|
op.Add(ops)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Click) Update(q input.Events) []ClickEvent {
|
func (c *Click) Next(q input.Events) (ClickEvent, bool) {
|
||||||
var events []ClickEvent
|
|
||||||
for {
|
for {
|
||||||
evt, ok := q.Next(c)
|
evt, ok := q.Next(c)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -94,10 +93,11 @@ func (c *Click) Update(q input.Events) []ClickEvent {
|
|||||||
}
|
}
|
||||||
switch e.Type {
|
switch e.Type {
|
||||||
case pointer.Release:
|
case pointer.Release:
|
||||||
if c.State == StatePressed {
|
wasPressed := c.State == StatePressed
|
||||||
events = append(events, ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source})
|
|
||||||
}
|
|
||||||
c.State = StateNormal
|
c.State = StateNormal
|
||||||
|
if wasPressed {
|
||||||
|
return ClickEvent{Type: TypeClick, Position: e.Position, Source: e.Source}, true
|
||||||
|
}
|
||||||
case pointer.Cancel:
|
case pointer.Cancel:
|
||||||
c.State = StateNormal
|
c.State = StateNormal
|
||||||
case pointer.Press:
|
case pointer.Press:
|
||||||
@@ -105,7 +105,7 @@ func (c *Click) Update(q input.Events) []ClickEvent {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
c.State = StatePressed
|
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:
|
case pointer.Move:
|
||||||
if c.State == StatePressed && !e.Hit {
|
if c.State == StatePressed && !e.Hit {
|
||||||
c.State = StateNormal
|
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) {
|
func (s *Scroll) Add(ops *ui.Ops) {
|
||||||
|
|||||||
+5
-1
@@ -90,7 +90,11 @@ func (e *Editor) Next() (EditorEvent, bool) {
|
|||||||
soff = e.scrollOff.Y
|
soff = e.scrollOff.Y
|
||||||
}
|
}
|
||||||
scrollTo := false
|
scrollTo := false
|
||||||
for _, evt := range e.clicker.Update(e.Inputs) {
|
for {
|
||||||
|
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:
|
||||||
|
|||||||
Reference in New Issue
Block a user