~eliasnaur/gio

69f982e26f2181d88a77f1214947722dcce1d26f — Elias Naur 2 years ago f075373
io/router: don't panic on focus moves when there is nothing to focus

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2 files changed, 8 insertions(+), 0 deletions(-)

M io/router/key.go
M io/router/key_test.go
M io/router/key.go => io/router/key.go +3 -0
@@ 171,6 171,9 @@ 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 {
	if len(q.dirOrder) == 0 {
		return false
	}
	order := 0
	if q.focus != nil {
		order = q.handlers[q.focus].dirOrder

M io/router/key_test.go => io/router/key_test.go +5 -0
@@ 311,6 311,11 @@ func TestFocusClick(t *testing.T) {
	assertEventPointerTypeSequence(t, r.Events(h), pointer.Cancel, pointer.Press, pointer.Release)
}

func TestNoFocus(t *testing.T) {
	r := new(Router)
	r.MoveFocus(FocusForward)
}

func assertKeyEvent(t *testing.T, events []event.Event, expected bool, expectedInputs ...event.Event) {
	t.Helper()
	var evtFocus int