fix: set initial binding input and select all for input strings when focused
This commit is contained in:
parent
bb0fb95692
commit
3fbb747c19
1 changed files with 19 additions and 12 deletions
|
|
@ -48,11 +48,7 @@ pub struct ShortcutBinding {
|
|||
|
||||
impl ShortcutBinding {
|
||||
pub fn reset(&mut self) {
|
||||
self.input = if self.is_saved {
|
||||
self.binding.to_string()
|
||||
} else {
|
||||
String::new()
|
||||
};
|
||||
self.input = self.binding.to_string();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -249,6 +245,11 @@ impl Model {
|
|||
}
|
||||
|
||||
self.shortcut_models = (self.actions)(&self.defaults, &shortcuts);
|
||||
for (_, model) in &mut self.shortcut_models {
|
||||
for (_, binding) in &mut model.bindings {
|
||||
binding.reset();
|
||||
}
|
||||
}
|
||||
self.shortcut_context = None;
|
||||
self.editing = None;
|
||||
|
||||
|
|
@ -324,11 +325,12 @@ impl Model {
|
|||
}
|
||||
|
||||
self.editing = Some(binding_id);
|
||||
shortcut.input.clear();
|
||||
shortcut.reset();
|
||||
|
||||
return Task::batch(vec![
|
||||
iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(),
|
||||
widget::text_input::focus(shortcut.id.clone())
|
||||
widget::text_input::focus(shortcut.id.clone()),
|
||||
widget::text_input::select_all(shortcut.id.clone())
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -345,7 +347,8 @@ impl Model {
|
|||
|
||||
return Task::batch(vec![
|
||||
iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(),
|
||||
widget::text_input::focus(id)
|
||||
widget::text_input::focus(id.clone()),
|
||||
widget::text_input::select_all(id)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -428,6 +431,7 @@ impl Model {
|
|||
if let Some(model) = self.shortcut_models.get_mut(short_id) {
|
||||
if let Some(shortcut) = model.bindings.get_mut(id) {
|
||||
shortcut.pending = shortcut.binding.clone();
|
||||
shortcut.input = shortcut.binding.to_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -442,7 +446,10 @@ impl Model {
|
|||
if enable {
|
||||
self.editing = Some(id);
|
||||
shortcut.input = shortcut.binding.to_string();
|
||||
return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard();
|
||||
return Task::batch(vec![
|
||||
iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(true).discard(),
|
||||
widget::text_input::select_all(shortcut.id.clone())
|
||||
]);
|
||||
} else if self.editing == Some(id) {
|
||||
self.editing = None;
|
||||
return iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard();
|
||||
|
|
@ -523,7 +530,7 @@ impl Model {
|
|||
|
||||
if shortcut.pending.keycode.is_none() && modifiers.is_empty() {
|
||||
self.editing = None;
|
||||
shortcut.input = String::new();
|
||||
shortcut.reset();
|
||||
return Task::batch(vec![
|
||||
cosmic::widget::text_input::focus(self.add_keybindings_button_id.clone()),
|
||||
iced_winit::platform_specific::commands::keyboard_shortcuts_inhibit::inhibit_shortcuts(false).discard()
|
||||
|
|
@ -676,7 +683,7 @@ impl Model {
|
|||
}
|
||||
|
||||
if !new_binding.is_set() {
|
||||
shortcut.input.clear();
|
||||
shortcut.reset();
|
||||
return Task::none();
|
||||
}
|
||||
|
||||
|
|
@ -707,7 +714,7 @@ impl Model {
|
|||
if let Some(shortcut) = model.bindings.get_mut(id) {
|
||||
let prev_binding = mem::replace(&mut shortcut.binding, new_binding.clone());
|
||||
shortcut.is_saved = true;
|
||||
shortcut.input.clear();
|
||||
shortcut.reset();
|
||||
|
||||
if self.editing == Some(id) {
|
||||
self.editing = None;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue