diff options
author | 2024-02-28 09:40:14 +0100 | |
---|---|---|
committer | 2024-02-28 09:40:14 +0100 | |
commit | 996be15f369e125e2da46194eefc149d7d14230e (patch) | |
tree | f9d8b3d70207385c6d5e87523f063dbc0d292a39 /widget/src/text_editor.rs | |
parent | a1de3f1c5593b3fb6e867ac522d1f42c49602a32 (diff) | |
download | iced-996be15f369e125e2da46194eefc149d7d14230e.tar.gz iced-996be15f369e125e2da46194eefc149d7d14230e.tar.bz2 iced-996be15f369e125e2da46194eefc149d7d14230e.zip |
Prioritize `TextInput` and `TextEditor` commands over text insertion
Diffstat (limited to 'widget/src/text_editor.rs')
-rw-r--r-- | widget/src/text_editor.rs | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs index 79432fe9..bad3ef4d 100644 --- a/widget/src/text_editor.rs +++ b/widget/src/text_editor.rs @@ -686,6 +686,37 @@ impl Update { text, .. } if state.is_focused => { + match key.as_ref() { + keyboard::Key::Named(key::Named::Enter) => { + return edit(Edit::Enter); + } + keyboard::Key::Named(key::Named::Backspace) => { + return edit(Edit::Backspace); + } + keyboard::Key::Named(key::Named::Delete) => { + return edit(Edit::Delete); + } + keyboard::Key::Named(key::Named::Escape) => { + return Some(Self::Unfocus); + } + keyboard::Key::Character("c") + if modifiers.command() => + { + return Some(Self::Copy); + } + keyboard::Key::Character("x") + if modifiers.command() => + { + return Some(Self::Cut); + } + keyboard::Key::Character("v") + if modifiers.command() && !modifiers.alt() => + { + return Some(Self::Paste); + } + _ => {} + } + if let Some(text) = text { if let Some(c) = text.chars().find(|c| !c.is_control()) { @@ -711,36 +742,7 @@ impl Update { } } - match key.as_ref() { - keyboard::Key::Named(key::Named::Enter) => { - edit(Edit::Enter) - } - keyboard::Key::Named(key::Named::Backspace) => { - edit(Edit::Backspace) - } - keyboard::Key::Named(key::Named::Delete) => { - edit(Edit::Delete) - } - keyboard::Key::Named(key::Named::Escape) => { - Some(Self::Unfocus) - } - keyboard::Key::Character("c") - if modifiers.command() => - { - Some(Self::Copy) - } - keyboard::Key::Character("x") - if modifiers.command() => - { - Some(Self::Cut) - } - keyboard::Key::Character("v") - if modifiers.command() && !modifiers.alt() => - { - Some(Self::Paste) - } - _ => None, - } + None } _ => None, }, |