Prioritize text insertion in TextInput and TextEditor

This commit is contained in:
Héctor Ramón Jiménez 2024-02-21 13:00:34 +01:00
parent 56ac21cacb
commit 680e8425c3
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 31 additions and 30 deletions

View file

@ -762,6 +762,27 @@ where
let modifiers = state.keyboard_modifiers;
focus.updated_at = Instant::now();
if let Some(text) = text {
state.is_pasting = None;
let c = text.chars().next().unwrap_or_default();
if !c.is_control() {
let mut editor = Editor::new(value, &mut state.cursor);
editor.insert(c);
let message = (on_input)(editor.contents());
shell.publish(message);
focus.updated_at = Instant::now();
update_cache(state, value);
return event::Status::Captured;
}
}
match key.as_ref() {
keyboard::Key::Named(key::Named::Enter) => {
if let Some(on_submit) = on_submit.clone() {
@ -944,29 +965,7 @@ where
) => {
return event::Status::Ignored;
}
_ => {
if let Some(text) = text {
state.is_pasting = None;
let c = text.chars().next().unwrap_or_default();
if !c.is_control() {
let mut editor =
Editor::new(value, &mut state.cursor);
editor.insert(c);
let message = (on_input)(editor.contents());
shell.publish(message);
focus.updated_at = Instant::now();
update_cache(state, value);
return event::Status::Captured;
}
}
}
_ => {}
}
return event::Status::Captured;