mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 18:05:35 +00:00
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:
@@ -363,11 +363,11 @@ func TestKeyRouting(t *testing.T) {
|
|||||||
r2.Queue(A, B)
|
r2.Queue(A, B)
|
||||||
|
|
||||||
// With focus, the events should traverse the branch of the hit tree
|
// 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[4]), false)
|
||||||
assertKeyEvent(t, r2.Events(&handlers[3]), true)
|
assertKeyEvent(t, r2.Events(&handlers[3]), true)
|
||||||
assertKeyEvent(t, r2.Events(&handlers[2]), false)
|
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)
|
assertKeyEvent(t, r2.Events(&handlers[0]), false, A)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -221,12 +221,6 @@ func (q *Router) queueKeyEvent(e key.Event) {
|
|||||||
n := &pq.hitTree[idx]
|
n := &pq.hitTree[idx]
|
||||||
if focused {
|
if focused {
|
||||||
idx = n.next
|
idx = n.next
|
||||||
if idx == -1 {
|
|
||||||
// No handler found in focus ancestor tree.
|
|
||||||
// Try all handlers.
|
|
||||||
idx = len(pq.hitTree) - 1
|
|
||||||
focused = false
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
idx--
|
idx--
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user