From f1f9470a14c505e16c0f7a6594e1c2c0d4ee1c8a Mon Sep 17 00:00:00 2001 From: Junkui Zhang <364772080@qq.com> Date: Thu, 22 May 2025 17:53:31 +0800 Subject: [PATCH] simplify --- .../gpui/src/platform/linux/wayland/client.rs | 23 +++++++-------- crates/gpui/src/platform/linux/x11/client.rs | 29 +++++++++---------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/crates/gpui/src/platform/linux/wayland/client.rs b/crates/gpui/src/platform/linux/wayland/client.rs index 3ef770251d59df832903ec4b469a105bcf82f523..9f112f3603c6b96bf11a51f1366ee159886d5264 100644 --- a/crates/gpui/src/platform/linux/wayland/client.rs +++ b/crates/gpui/src/platform/linux/wayland/client.rs @@ -1224,7 +1224,7 @@ impl Dispatch for WaylandClientStatePtr { }; let keymap_state = xkb::State::new(&keymap); let keyboard_layout = LinuxKeyboardLayout::new(&keymap_state); - state.keymap_state = Some(xkb::State::new(&keymap)); + state.keymap_state = Some(keymap_state); state.compose_state = get_xkb_compose_state(&xkb_context); update_keyboard_mapper(&mut state, keyboard_layout, 0); drop(state); @@ -1270,7 +1270,7 @@ impl Dispatch for WaylandClientStatePtr { let old_layout = keymap_state.serialize_layout(xkbcommon::xkb::STATE_LAYOUT_EFFECTIVE); keymap_state.update_mask(mods_depressed, mods_latched, mods_locked, 0, 0, group); - state.modifiers = Modifiers::from_xkb(&keymap_state); + state.modifiers = Modifiers::from_xkb(keymap_state); state.capslock = Capslock::from_xkb(&keymap_state); let keymap_state = state.keymap_state.as_mut().unwrap(); @@ -2185,16 +2185,13 @@ fn update_keyboard_mapper( 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) - }; + let id = keyboard_layout.id().to_string(); + let mapper = client + .keyboard_mapper_cache + .entry(id) + .or_insert(Rc::new(LinuxKeyboardMapper::new(0, 0, group))) + .clone(); + + client.keyboard_mapper = Some(mapper); client.keyboard_layout = Box::new(keyboard_layout); } diff --git a/crates/gpui/src/platform/linux/x11/client.rs b/crates/gpui/src/platform/linux/x11/client.rs index 4f3938c517757c30f20baa4eb6c1017e3ad5c2da..c4cc8bd2cd8e4df8f9de37af18162692304f5c3b 100644 --- a/crates/gpui/src/platform/linux/x11/client.rs +++ b/crates/gpui/src/platform/linux/x11/client.rs @@ -1072,8 +1072,7 @@ impl X11Client { match compose_state.status() { xkbc::Status::Composed => { state.pre_edit_text.take(); - let key_char = compose_state.utf8(); - keystroke.key_char = key_char; + keystroke.key_char = compose_state.utf8(); if let Some(keysym) = compose_state.keysym() { keystroke.key = xkbc::keysym_get_name(keysym); } @@ -2311,19 +2310,17 @@ fn update_keyboard_mapper( latched_group: u32, locked_group: u32, ) { - client.keyboard_mapper = - if let Some(mapper) = client.keyboard_mapper_cache.get(keyboard_layout.id()) { - Rc::clone(mapper) - } else { - let mapper = Rc::new(LinuxKeyboardMapper::new( - base_group, - latched_group, - locked_group, - )); - client - .keyboard_mapper_cache - .insert(keyboard_layout.id().to_string(), Rc::clone(&mapper)); - mapper - }; + let id = keyboard_layout.id().to_string(); + let mapper = client + .keyboard_mapper_cache + .entry(id) + .or_insert(Rc::new(LinuxKeyboardMapper::new( + base_group, + latched_group, + locked_group, + ))) + .clone(); + + client.keyboard_mapper = mapper; client.keyboard_layout = Box::new(keyboard_layout); }