diff --git a/ui/input/key.go b/ui/app/internal/input/key.go similarity index 87% rename from ui/input/key.go rename to ui/app/internal/input/key.go index 7a23dca9..84272a8c 100644 --- a/ui/input/key.go +++ b/ui/app/internal/input/key.go @@ -4,13 +4,14 @@ package input import ( "gioui.org/ui" + "gioui.org/ui/input" "gioui.org/ui/internal/ops" "gioui.org/ui/key" ) type keyQueue struct { - focus Key - handlers map[Key]*keyHandler + focus input.Key + handlers map[input.Key]*keyHandler reader ui.OpsReader state key.TextInputState } @@ -36,7 +37,7 @@ func (q *keyQueue) InputState() key.TextInputState { func (q *keyQueue) Frame(root *ui.Ops, events handlerEvents) { if q.handlers == nil { - q.handlers = make(map[Key]*keyHandler) + q.handlers = make(map[input.Key]*keyHandler) } for _, h := range q.handlers { h.active = false @@ -76,15 +77,15 @@ func (q *keyQueue) Frame(root *ui.Ops, events handlerEvents) { } } -func (q *keyQueue) Push(e Event, events handlerEvents) { +func (q *keyQueue) Push(e input.Event, events handlerEvents) { if q.focus == nil { return } events[q.focus] = append(events[q.focus], e) } -func (q *keyQueue) resolveFocus(events handlerEvents) (Key, listenerPriority, bool) { - var k Key +func (q *keyQueue) resolveFocus(events handlerEvents) (input.Key, listenerPriority, bool) { + var k input.Key var pri listenerPriority var hide bool loop: @@ -111,7 +112,7 @@ loop: h = new(keyHandler) q.handlers[op.Key] = h // Reset the handler on (each) first appearance. - events[op.Key] = []Event{key.FocusEvent{Focus: false}} + events[op.Key] = []input.Event{key.FocusEvent{Focus: false}} } h.active = true case ops.TypeHideInput: diff --git a/ui/input/pointer.go b/ui/app/internal/input/pointer.go similarity index 94% rename from ui/input/pointer.go rename to ui/app/internal/input/pointer.go index 15b05e30..d834f20d 100644 --- a/ui/input/pointer.go +++ b/ui/app/internal/input/pointer.go @@ -8,6 +8,7 @@ import ( "gioui.org/ui" "gioui.org/ui/f32" + "gioui.org/ui/input" "gioui.org/ui/internal/ops" "gioui.org/ui/pointer" ) @@ -15,10 +16,10 @@ import ( type pointerQueue struct { hitTree []hitNode areas []areaNode - handlers map[Key]*pointerHandler + handlers map[input.Key]*pointerHandler pointers []pointerInfo reader ui.OpsReader - scratch []Key + scratch []input.Key } type hitNode struct { @@ -28,13 +29,13 @@ type hitNode struct { pass bool // For handler nodes. - key Key + key input.Key } type pointerInfo struct { id pointer.ID pressed bool - handlers []Key + handlers []input.Key } type pointerHandler struct { @@ -102,7 +103,7 @@ func (q *pointerQueue) collectHandlers(r *ui.OpsReader, events handlerEvents, t if !ok { h = new(pointerHandler) q.handlers[op.Key] = h - events[op.Key] = []Event{pointer.Event{Type: pointer.Cancel}} + events[op.Key] = []input.Event{pointer.Event{Type: pointer.Cancel}} } h.active = true h.area = area @@ -112,7 +113,7 @@ func (q *pointerQueue) collectHandlers(r *ui.OpsReader, events handlerEvents, t } } -func (q *pointerQueue) opHit(handlers *[]Key, pos f32.Point) { +func (q *pointerQueue) opHit(handlers *[]input.Key, pos f32.Point) { // Track whether we're passing through hits. pass := true idx := len(q.hitTree) - 1 @@ -155,7 +156,7 @@ func (a *areaNode) hit(p f32.Point) bool { func (q *pointerQueue) init() { if q.handlers == nil { - q.handlers = make(map[Key]*pointerHandler) + q.handlers = make(map[input.Key]*pointerHandler) } } @@ -176,7 +177,7 @@ func (q *pointerQueue) Frame(root *ui.Ops, events handlerEvents) { } } -func (q *pointerQueue) dropHandler(k Key) { +func (q *pointerQueue) dropHandler(k input.Key) { delete(q.handlers, k) for i := range q.pointers { p := &q.pointers[i] diff --git a/ui/input/router.go b/ui/app/internal/input/router.go similarity index 85% rename from ui/input/router.go rename to ui/app/internal/input/router.go index 410e7681..bc023800 100644 --- a/ui/input/router.go +++ b/ui/app/internal/input/router.go @@ -4,6 +4,7 @@ package input import ( "gioui.org/ui" + "gioui.org/ui/input" "gioui.org/ui/key" "gioui.org/ui/pointer" ) @@ -17,9 +18,9 @@ type Router struct { handlers handlerEvents } -type handlerEvents map[Key][]Event +type handlerEvents map[input.Key][]input.Event -func (q *Router) Events(k Key) []Event { +func (q *Router) Events(k input.Key) []input.Event { events := q.handlers[k] delete(q.handlers, k) return events @@ -34,7 +35,7 @@ func (q *Router) Frame(ops *ui.Ops) { q.kqueue.Frame(ops, q.handlers) } -func (q *Router) Add(e Event) { +func (q *Router) Add(e input.Event) { q.init() switch e := e.(type) { case pointer.Event: diff --git a/ui/app/window.go b/ui/app/window.go index 3319a246..027bc3ba 100644 --- a/ui/app/window.go +++ b/ui/app/window.go @@ -12,6 +12,7 @@ import ( "gioui.org/ui" "gioui.org/ui/app/internal/gpu" "gioui.org/ui/input" + iinput "gioui.org/ui/app/internal/input" "gioui.org/ui/internal/ops" "gioui.org/ui/key" ) @@ -46,7 +47,7 @@ type Window struct { nextFrame time.Time delayedDraw *time.Timer - router input.Router + router iinput.Router reader ui.OpsReader }