ui/input: rename Queue to Router and Events to Queue

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-12 00:03:52 +02:00
parent 6a4ba30c96
commit a22bcfc88c
5 changed files with 14 additions and 14 deletions
+55
View File
@@ -0,0 +1,55 @@
// SPDX-License-Identifier: Unlicense OR MIT
package input
import (
"gioui.org/ui"
"gioui.org/ui/key"
"gioui.org/ui/pointer"
)
// Router is a Queue implementation that routes events from
// all available input sources to registered handlers.
type Router struct {
pqueue pointerQueue
kqueue keyQueue
handlers handlerEvents
}
type handlerEvents map[Key][]Event
func (q *Router) Events(k Key) []Event {
events := q.handlers[k]
delete(q.handlers, k)
return events
}
func (q *Router) Frame(ops *ui.Ops) {
q.init()
for k := range q.handlers {
delete(q.handlers, k)
}
q.pqueue.Frame(ops, q.handlers)
q.kqueue.Frame(ops, q.handlers)
}
func (q *Router) Add(e Event) {
q.init()
switch e := e.(type) {
case pointer.Event:
q.pqueue.Push(e, q.handlers)
case key.EditEvent, key.ChordEvent, key.FocusEvent:
q.kqueue.Push(e, q.handlers)
}
}
func (q *Router) InputState() key.TextInputState {
return q.kqueue.InputState()
}
func (q *Router) init() {
if q.handlers == nil {
q.handlers = make(handlerEvents)
}
}