ui/input: support single stepping through events

Change input.Events interface to return one event at a time until
the queue is empty.

Change text.Editor and gestures to match.

Re-add Editor.Submit while we're here; we don't want to enable
submit mode always.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-06-21 16:30:20 +02:00
parent 893b7f3c9f
commit b981ccf9ed
4 changed files with 28 additions and 9 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ package input
// Events maps an event handler key to the events
// available to the handler.
type Events interface {
For(k Key) []Event
Next(k Key) (Event, bool)
}
// Key is the stable identifier for an event handler. For a handler h, the
+8 -2
View File
@@ -19,8 +19,14 @@ type Queue struct {
type handlerEvents map[Key][]Event
func (q *Queue) For(k Key) []Event {
return q.handlers[k]
func (q *Queue) Next(k Key) (Event, bool) {
events := q.handlers[k]
if len(events) == 0 {
return nil, false
}
e := events[0]
q.handlers[k] = events[1:]
return e, true
}
func (q *Queue) Frame(ops *ui.Ops) {