fix macos

This commit is contained in:
Junkui Zhang 2025-08-26 00:27:12 +08:00
parent b27e1ec5c7
commit 459f168ca9

View file

@ -354,19 +354,19 @@ impl MacPlatform {
let mut mask = NSEventModifierFlags::empty(); let mut mask = NSEventModifierFlags::empty();
for (modifier, flag) in &[ for (modifier, flag) in &[
( (
keystroke.modifiers.platform, keystroke.display_modifiers.platform,
NSEventModifierFlags::NSCommandKeyMask, NSEventModifierFlags::NSCommandKeyMask,
), ),
( (
keystroke.modifiers.control, keystroke.display_modifiers.control,
NSEventModifierFlags::NSControlKeyMask, NSEventModifierFlags::NSControlKeyMask,
), ),
( (
keystroke.modifiers.alt, keystroke.display_modifiers.alt,
NSEventModifierFlags::NSAlternateKeyMask, NSEventModifierFlags::NSAlternateKeyMask,
), ),
( (
keystroke.modifiers.shift, keystroke.display_modifiers.shift,
NSEventModifierFlags::NSShiftKeyMask, NSEventModifierFlags::NSShiftKeyMask,
), ),
] { ] {
@ -379,7 +379,7 @@ impl MacPlatform {
.initWithTitle_action_keyEquivalent_( .initWithTitle_action_keyEquivalent_(
ns_string(name), ns_string(name),
selector, selector,
ns_string(key_to_native(&keystroke.key).as_ref()), ns_string(key_to_native(&keystroke.display_key).as_ref()),
) )
.autorelease(); .autorelease();
if Self::os_version() >= SemanticVersion::new(12, 0, 0) { if Self::os_version() >= SemanticVersion::new(12, 0, 0) {
@ -1404,7 +1404,7 @@ extern "C" fn on_keyboard_layout_change(this: &mut Object, _: Sel, _: id) {
let platform = unsafe { get_mac_platform(this) }; let platform = unsafe { get_mac_platform(this) };
let mut lock = platform.0.lock(); let mut lock = platform.0.lock();
let keyboard_layout = MacKeyboardLayout::new(); let keyboard_layout = MacKeyboardLayout::new();
lock.keyboard_mapper = MacKeyboardMapper::new(keyboard_layout.id()); lock.keyboard_mapper = Rc::new(MacKeyboardMapper::new(keyboard_layout.id()));
if let Some(mut callback) = lock.on_keyboard_layout_change.take() { if let Some(mut callback) = lock.on_keyboard_layout_change.take() {
drop(lock); drop(lock);
callback(); callback();