simplify

Junkui Zhang created

Change summary

crates/gpui/src/platform/linux/wayland/client.rs | 30 ++++++++++++------
1 file changed, 20 insertions(+), 10 deletions(-)

Detailed changes

crates/gpui/src/platform/linux/wayland/client.rs 🔗

@@ -1227,16 +1227,7 @@ impl Dispatch<wl_keyboard::WlKeyboard, ()> 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<zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1, ()>
         }
     }
 }
+
+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);
+}