gesture,widget: detect multi-click on pointer.Press

References: https://todo.sr.ht/~eliasnaur/gio/455
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2022-11-07 07:23:50 -06:00
parent 9f62230c38
commit 5c896eabbb
3 changed files with 14 additions and 8 deletions
+7 -7
View File
@@ -192,12 +192,6 @@ func (c *Click) Events(q event.Queue) []ClickEvent {
}
c.pressed = false
if !c.entered || c.hovered {
if e.Time-c.clickedAt < doubleClickDuration {
c.clicks++
} else {
c.clicks = 1
}
c.clickedAt = e.Time
events = append(events, ClickEvent{Type: TypeClick, Position: e.Position.Round(), Source: e.Source, Modifiers: e.Modifiers, NumClicks: c.clicks})
} else {
events = append(events, ClickEvent{Type: TypeCancel})
@@ -224,7 +218,13 @@ func (c *Click) Events(q event.Queue) []ClickEvent {
break
}
c.pressed = true
events = append(events, ClickEvent{Type: TypePress, Position: e.Position.Round(), Source: e.Source, Modifiers: e.Modifiers})
if e.Time-c.clickedAt < doubleClickDuration {
c.clicks++
} else {
c.clicks = 1
}
c.clickedAt = e.Time
events = append(events, ClickEvent{Type: TypePress, Position: e.Position.Round(), Source: e.Source, Modifiers: e.Modifiers, NumClicks: c.clicks})
case pointer.Leave:
if !c.pressed {
c.pid = e.PointerID
+2 -1
View File
@@ -98,9 +98,10 @@ func mouseClickEvents(times ...time.Duration) []event.Event {
}
events := make([]event.Event, 0, 2*len(times))
for _, t := range times {
press := press
press.Time = t
release := press
release.Type = pointer.Release
release.Time = t
events = append(events, press, release)
}
return events