Revert "io/router: try all handlers if a key don't match the focus ancestor tree"

This reverts commit 28c206fc78. The commit
introduced counter-intuitive behaviour as demonstrated by #503. In the
meantime, topmost handlers now receive all unhandled key.Events[0], which
should cover the use-cases that motivated the original commit.

[0] https://gioui.org/commit/0dba85f52e5131c03d903c84355fb90cdb978811

Fixes: https://todo.sr.ht/~eliasnaur/gio/503
Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2023-05-26 17:03:49 -06:00
parent 4677b72a4c
commit e3ef98dda3
2 changed files with 2 additions and 8 deletions
+2 -2
View File
@@ -363,11 +363,11 @@ func TestKeyRouting(t *testing.T) {
r2.Queue(A, B)
// With focus, the events should traverse the branch of the hit tree
// containing the focused element, and then every handler.
// containing the focused element.
assertKeyEvent(t, r2.Events(&handlers[4]), false)
assertKeyEvent(t, r2.Events(&handlers[3]), true)
assertKeyEvent(t, r2.Events(&handlers[2]), false)
assertKeyEvent(t, r2.Events(&handlers[1]), false, B)
assertKeyEvent(t, r2.Events(&handlers[1]), false)
assertKeyEvent(t, r2.Events(&handlers[0]), false, A)
}
-6
View File
@@ -221,12 +221,6 @@ func (q *Router) queueKeyEvent(e key.Event) {
n := &pq.hitTree[idx]
if focused {
idx = n.next
if idx == -1 {
// No handler found in focus ancestor tree.
// Try all handlers.
idx = len(pq.hitTree) - 1
focused = false
}
} else {
idx--
}