Cancel DragValue edit if Escape is pressed (#4713)

Since Escape takes focus away from the text field, it makes more sense
for it to cancel the change rather than confirm it.

This only matters if `update_while_editing` is set to false, of course.
This commit is contained in:
YgorSouza 2024-06-27 09:18:25 +02:00 committed by GitHub
parent a1a0d4a12a
commit ab861574f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 2 additions and 2 deletions

View File

@ -457,7 +457,7 @@ impl<'a> Widget for DragValue<'a> {
let text_style = ui.style().drag_value_text_style.clone();
if ui.memory(|mem| mem.lost_focus(id)) {
if ui.memory(|mem| mem.lost_focus(id)) && !ui.input(|i| i.key_pressed(Key::Escape)) {
let value_text = ui.data_mut(|data| data.remove_temp::<String>(id));
if let Some(value_text) = value_text {
// We were editing the value as text last frame, but lost focus.
@ -496,7 +496,7 @@ impl<'a> Widget for DragValue<'a> {
response.changed()
} else {
// Update only when the edit has lost focus.
response.lost_focus()
response.lost_focus() && !ui.input(|i| i.key_pressed(Key::Escape))
};
if update {
let parsed_value = match &custom_parser {