Skip to content

Commit 182250d

Browse files
committed
appkit: fix a regression regarding hotkey failures.
1 parent e47d639 commit 182250d

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

winit-appkit/src/view.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,11 @@ define_class!(
575575
let send_raw = if self.ivars().forward_key_to_app.get() {
576576
true
577577
} else if self.is_ime_enabled() {
578+
// Allow non-text keys through, and always pass through when Ctrl/Command is held
579+
// for shortcuts.
580+
let mods = self.ivars().modifiers.get().state();
578581
key_event.text.is_none()
582+
|| mods.intersects(ModifiersState::CONTROL | ModifiersState::META)
579583
} else {
580584
!had_ime_input
581585
};
@@ -608,8 +612,13 @@ define_class!(
608612
return;
609613
}
610614

611-
// Route keyUp: forward non-character releases when IME is enabled and didn't consume.
612-
if !self.is_ime_enabled() || (!is_char_key && !ime_consumed_event) {
615+
// Route keyUp: forward non-character releases when IME is enabled and didn't consume,
616+
// or when Ctrl/Command is held (shortcuts).
617+
let mods = self.ivars().modifiers.get().state();
618+
if !self.is_ime_enabled()
619+
|| (!is_char_key && !ime_consumed_event)
620+
|| mods.intersects(ModifiersState::CONTROL | ModifiersState::META)
621+
{
613622
self.queue_keyboard_input_event(key_event, false);
614623
}
615624
}

0 commit comments

Comments
 (0)