macos: Fix menu bar flickering (#37707)

Closes #37526

Release Notes:

- Fixed menu bar flickering when using some IMEs on macOS.
This commit is contained in:
张小白
2025-09-08 10:44:19 -04:00
committed by GitHub
parent 4f1634f95c
commit 3f80ac0127
+25 -9
View File
@@ -1317,15 +1317,31 @@ pub fn handle_keymap_file_changes(
})
.detach();
let mut current_layout_id = cx.keyboard_layout().id().to_string();
cx.on_keyboard_layout_change(move |cx| {
let next_layout_id = cx.keyboard_layout().id();
if next_layout_id != current_layout_id {
current_layout_id = next_layout_id.to_string();
keyboard_layout_tx.unbounded_send(()).ok();
}
})
.detach();
#[cfg(target_os = "windows")]
{
let mut current_layout_id = cx.keyboard_layout().id().to_string();
cx.on_keyboard_layout_change(move |cx| {
let next_layout_id = cx.keyboard_layout().id();
if next_layout_id != current_layout_id {
current_layout_id = next_layout_id.to_string();
keyboard_layout_tx.unbounded_send(()).ok();
}
})
.detach();
}
#[cfg(not(target_os = "windows"))]
{
let mut current_mapping = cx.keyboard_mapper().get_key_equivalents().cloned();
cx.on_keyboard_layout_change(move |cx| {
let next_mapping = cx.keyboard_mapper().get_key_equivalents();
if current_mapping.as_ref() != next_mapping {
current_mapping = next_mapping.cloned();
keyboard_layout_tx.unbounded_send(()).ok();
}
})
.detach();
}
load_default_keymap(cx);