From 0edb7d68903e163378e5e5bfc1c78cefa845c36c Mon Sep 17 00:00:00 2001 From: Kamil Jarosz Date: Wed, 22 May 2024 13:39:03 +0200 Subject: [PATCH] core: KeyPress events have precedence over tabbing When there's a button that handles KeyPress "Tab" event (code 18), the tabbing should not be performed. --- core/src/player.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/core/src/player.rs b/core/src/player.rs index 47a0d84eb..c362256fd 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -1125,6 +1125,19 @@ impl Player { } } + // KeyPress events also take precedence over tabbing. + if !key_press_handled { + if let PlayerEvent::KeyDown { + key_code: KeyCode::Tab, + .. + } = event + { + let reversed = context.input.is_key_down(KeyCode::Shift); + let tracker = context.focus_tracker; + tracker.cycle(context, reversed); + } + } + // KeyPress events also take precedence over keyboard navigation. // Note that keyboard navigation works only when the highlight is visible. if !key_press_handled && context.focus_tracker.highlight().is_visible() { @@ -1200,18 +1213,6 @@ impl Player { } } - if let PlayerEvent::KeyDown { - key_code: KeyCode::Tab, - .. - } = event - { - self.mutate_with_update_context(|context| { - let reversed = context.input.is_key_down(KeyCode::Shift); - let tracker = context.focus_tracker; - tracker.cycle(context, reversed); - }); - } - if self.should_reset_highlight(event) { self.mutate_with_update_context(|context| { context.focus_tracker.reset_highlight();