io/key,io/input: [API] move FocusDirection to package io/key

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2023-10-09 13:09:46 -05:00
parent 6027517949
commit a11f35fe0d
5 changed files with 44 additions and 44 deletions
+8 -19
View File
@@ -65,17 +65,6 @@ const (
TextInputOpen
)
type FocusDirection int
const (
FocusRight FocusDirection = iota
FocusLeft
FocusUp
FocusDown
FocusForward
FocusBackward
)
// InputState returns the last text input state as
// determined in Frame.
func (q *keyQueue) InputState() TextInputState {
@@ -171,7 +160,7 @@ func (q *keyQueue) updateFocusLayout() {
}
// MoveFocus attempts to move the focus in the direction of dir, returning true if it succeeds.
func (q *keyQueue) MoveFocus(dir FocusDirection, events *handlerEvents) bool {
func (q *keyQueue) MoveFocus(dir key.FocusDirection, events *handlerEvents) bool {
if len(q.dirOrder) == 0 {
return false
}
@@ -181,17 +170,17 @@ func (q *keyQueue) MoveFocus(dir FocusDirection, events *handlerEvents) bool {
}
focus := q.dirOrder[order]
switch dir {
case FocusForward, FocusBackward:
case key.FocusForward, key.FocusBackward:
if len(q.order) == 0 {
break
}
order := 0
if dir == FocusBackward {
if dir == key.FocusBackward {
order = -1
}
if q.focus != nil {
order = q.handlers[q.focus].order
if dir == FocusForward {
if dir == key.FocusForward {
order++
} else {
order--
@@ -200,11 +189,11 @@ func (q *keyQueue) MoveFocus(dir FocusDirection, events *handlerEvents) bool {
order = (order + len(q.order)) % len(q.order)
q.setFocus(q.order[order], events)
return true
case FocusRight, FocusLeft:
case key.FocusRight, key.FocusLeft:
next := order
if q.focus != nil {
next = order + 1
if dir == FocusLeft {
if dir == key.FocusLeft {
next = order - 1
}
}
@@ -215,9 +204,9 @@ func (q *keyQueue) MoveFocus(dir FocusDirection, events *handlerEvents) bool {
return true
}
}
case FocusUp, FocusDown:
case key.FocusUp, key.FocusDown:
delta := +1
if dir == FocusUp {
if dir == key.FocusUp {
delta = -1
}
nextRow := 0
+13 -13
View File
@@ -241,26 +241,26 @@ func TestDirectionalFocus(t *testing.T) {
}
r.Frame(ops)
r.MoveFocus(FocusLeft)
r.MoveFocus(key.FocusLeft)
assertFocus(t, r, &handlers[0])
r.MoveFocus(FocusLeft)
r.MoveFocus(key.FocusLeft)
assertFocus(t, r, &handlers[0])
r.MoveFocus(FocusRight)
r.MoveFocus(key.FocusRight)
assertFocus(t, r, &handlers[1])
r.MoveFocus(FocusRight)
r.MoveFocus(key.FocusRight)
assertFocus(t, r, &handlers[1])
r.MoveFocus(FocusDown)
r.MoveFocus(key.FocusDown)
assertFocus(t, r, &handlers[2])
r.MoveFocus(FocusDown)
r.MoveFocus(key.FocusDown)
assertFocus(t, r, &handlers[2])
r.MoveFocus(FocusLeft)
r.MoveFocus(key.FocusLeft)
assertFocus(t, r, &handlers[3])
r.MoveFocus(FocusUp)
r.MoveFocus(key.FocusUp)
assertFocus(t, r, &handlers[0])
r.MoveFocus(FocusForward)
r.MoveFocus(key.FocusForward)
assertFocus(t, r, &handlers[1])
r.MoveFocus(FocusBackward)
r.MoveFocus(key.FocusBackward)
assertFocus(t, r, &handlers[0])
}
@@ -285,7 +285,7 @@ func TestFocusScroll(t *testing.T) {
parent.Pop()
r.Frame(ops)
r.MoveFocus(FocusLeft)
r.MoveFocus(key.FocusLeft)
r.RevealFocus(image.Rect(0, 0, 15, 40))
evts := r.Events(h)
assertScrollEvent(t, evts[len(evts)-1], f32.Pt(6, -9))
@@ -305,14 +305,14 @@ func TestFocusClick(t *testing.T) {
cl.Pop()
r.Frame(ops)
r.MoveFocus(FocusLeft)
r.MoveFocus(key.FocusLeft)
r.ClickFocus()
assertEventPointerTypeSequence(t, r.Events(h), pointer.Cancel, pointer.Press, pointer.Release)
}
func TestNoFocus(t *testing.T) {
r := new(Router)
r.MoveFocus(FocusForward)
r.MoveFocus(key.FocusForward)
}
func TestKeyRouting(t *testing.T) {
+1 -1
View File
@@ -236,7 +236,7 @@ func (q *Router) queueKeyEvent(e key.Event) {
}
}
func (q *Router) MoveFocus(dir FocusDirection) bool {
func (q *Router) MoveFocus(dir key.FocusDirection) bool {
return q.key.queue.MoveFocus(dir, &q.handlers)
}