From bc70106fe568c5abf54fa18befe65b2b3f521e27 Mon Sep 17 00:00:00 2001 From: 19MisterX98 <41451155+19MisterX98@users.noreply.github.com> Date: Wed, 23 Apr 2025 22:07:08 +0200 Subject: [PATCH] fix(shortcuts): disable default keybind when modified --- .../src/pages/input/keyboard/shortcuts/common.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs index 0bfb25c..7f8ab0d 100644 --- a/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs +++ b/cosmic-settings/src/pages/input/keyboard/shortcuts/common.rs @@ -11,7 +11,7 @@ use cosmic_settings_page as page; use slab::Slab; use slotmap::Key; use std::borrow::Cow; -use std::io; +use std::{io, mem}; use std::str::FromStr; #[derive(Clone, Debug)] @@ -534,9 +534,8 @@ impl Model { if let Some(new_binding) = apply_binding { if let Some(model) = self.shortcut_models.get_mut(short_id) { if let Some(shortcut) = model.bindings.get_mut(id) { - let prev_binding = shortcut.binding.clone(); - - shortcut.binding = new_binding.clone(); + let prev_binding = mem::replace(&mut shortcut.binding, new_binding.clone()); + shortcut.is_saved = true; shortcut.input.clear(); @@ -545,7 +544,12 @@ impl Model { } let action = model.action.clone(); - self.config_remove(&prev_binding); + + if shortcut.is_default { + self.config_add(Action::Disable, prev_binding); + } else { + self.config_remove(&prev_binding); + } self.config_add(action, new_binding); return cosmic::widget::text_input::focus( self.add_keybindings_button_id.clone(),