From 7e0d74db8a01c77a28819fbe1b10cce419e3ad01 Mon Sep 17 00:00:00 2001 From: Junkui Zhang <364772080@qq.com> Date: Thu, 22 May 2025 16:20:57 +0800 Subject: [PATCH] simplify --- .../gpui/src/platform/linux/wayland/client.rs | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/crates/gpui/src/platform/linux/wayland/client.rs b/crates/gpui/src/platform/linux/wayland/client.rs index c67dd41d13d096cbe5da1c09772add1702cc6fec..87ba7bb951aff86ba328f302bb86fb6251625fc6 100644 --- a/crates/gpui/src/platform/linux/wayland/client.rs +++ b/crates/gpui/src/platform/linux/wayland/client.rs @@ -1227,16 +1227,7 @@ impl Dispatch for WaylandClientStatePtr { let keyboard_layout = LinuxKeyboardLayout::new(&keymap_state); state.keymap_state = Some(xkb::State::new(&keymap)); state.compose_state = get_xkb_compose_state(&xkb_context); - if let Some(mapper) = state.keyboard_mapper_cache.get(keyboard_layout.id()) { - state.keyboard_mapper = Some(mapper.clone()); - } else { - let mapper = Rc::new(LinuxKeyboardMapper::new(0, 0, 0)); - state.keyboard_mapper = Some(mapper.clone()); - state - .keyboard_mapper_cache - .insert(keyboard_layout.id().to_string(), mapper); - } - state.keyboard_layout = Box::new(keyboard_layout); + update_keyboard_mapper(&mut state, keyboard_layout, 0); drop(state); this.handle_keyboard_layout_change(); @@ -2192,3 +2183,22 @@ impl Dispatch } } } + +fn update_keyboard_mapper( + client: &mut WaylandClientState, + keyboard_layout: LinuxKeyboardLayout, + group: u32, +) { + client.keyboard_mapper = + if let Some(mapper) = client.keyboard_mapper_cache.get(keyboard_layout.id()) { + Some(mapper.clone()) + } else { + let mapper = Rc::new(LinuxKeyboardMapper::new(0, 0, group)); + client.keyboard_mapper = Some(mapper.clone()); + client + .keyboard_mapper_cache + .insert(keyboard_layout.id().to_string(), mapper.clone()); + Some(mapper) + }; + client.keyboard_layout = Box::new(keyboard_layout); +}