commit dbb427c946cc7c431866a2558ac39e6314fa22b7
parent 436214415c2907d681702635370b0d638f8bca24
Author: William Casarin <jb55@jb55.com>
Date: Tue, 27 Jan 2026 13:42:51 -0800
dave: fix Ctrl+Shift+Tab keybinding order
Check Ctrl+Shift+Tab before Ctrl+Tab because egui's consume_key uses
matches_logically which ignores extra Shift modifier. This was causing
Ctrl+Shift+Tab to be consumed by the Ctrl+Tab handler.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat:
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/crates/notedeck_dave/src/ui/keybindings.rs b/crates/notedeck_dave/src/ui/keybindings.rs
@@ -60,11 +60,13 @@ pub fn check_keybindings(
// Ctrl+Tab / Ctrl+Shift+Tab for cycling through agents
// Works even with text input focus since Ctrl modifier makes it unambiguous
+ // IMPORTANT: Check Ctrl+Shift+Tab first because consume_key uses matches_logically
+ // which ignores extra Shift, so Ctrl+Tab would consume Ctrl+Shift+Tab otherwise
if let Some(action) = ctx.input_mut(|i| {
- if i.consume_key(ctrl, Key::Tab) {
- Some(KeyAction::NextAgent)
- } else if i.consume_key(ctrl_shift, Key::Tab) {
+ if i.consume_key(ctrl_shift, Key::Tab) {
Some(KeyAction::PreviousAgent)
+ } else if i.consume_key(ctrl, Key::Tab) {
+ Some(KeyAction::NextAgent)
} else {
None
}