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:
+25
-9
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user