From b544c908120ae890d26ab52bcae31ce02f877053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Mon, 22 Jan 2024 14:30:40 +0100 Subject: [PATCH] Fix impossible to type `v` in `TextInput` --- widget/src/text_input.rs | 63 ++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs index 2cf4ef774b..0a7ed01493 100644 --- a/widget/src/text_input.rs +++ b/widget/src/text_input.rs @@ -886,42 +886,38 @@ where update_cache(state, value); } - keyboard::Key::Character("v") => { + keyboard::Key::Character("v") if state.keyboard_modifiers.command() - && !state.keyboard_modifiers.alt() - { - let content = match state.is_pasting.take() { - Some(content) => content, - None => { - let content: String = clipboard - .read() - .unwrap_or_default() - .chars() - .filter(|c| !c.is_control()) - .collect(); - - Value::new(&content) - } - }; + && !state.keyboard_modifiers.alt() => + { + let content = match state.is_pasting.take() { + Some(content) => content, + None => { + let content: String = clipboard + .read() + .unwrap_or_default() + .chars() + .filter(|c| !c.is_control()) + .collect(); + + Value::new(&content) + } + }; - let mut editor = - Editor::new(value, &mut state.cursor); + let mut editor = Editor::new(value, &mut state.cursor); - editor.paste(content.clone()); + editor.paste(content.clone()); - let message = if let Some(paste) = &on_paste { - (paste)(editor.contents()) - } else { - (on_input)(editor.contents()) - }; - shell.publish(message); + let message = if let Some(paste) = &on_paste { + (paste)(editor.contents()) + } else { + (on_input)(editor.contents()) + }; + shell.publish(message); - state.is_pasting = Some(content); + state.is_pasting = Some(content); - update_cache(state, value); - } else { - state.is_pasting = None; - } + update_cache(state, value); } keyboard::Key::Character("a") if state.keyboard_modifiers.command() => @@ -945,12 +941,11 @@ where } _ => { if let Some(text) = text { + state.is_pasting = None; + let c = text.chars().next().unwrap_or_default(); - if state.is_pasting.is_none() - && !state.keyboard_modifiers.command() - && !c.is_control() - { + if !c.is_control() { let mut editor = Editor::new(value, &mut state.cursor);