DragValue: when keyboard editing, only update the value on focus lost (#2688)
* test * moved some accesskit stuff * reverted accesskit change * Add explanatory comment * fmt --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
parent
4721a0a680
commit
b40dba18c6
1 changed files with 11 additions and 7 deletions
|
@ -475,6 +475,9 @@ impl<'a> Widget for DragValue<'a> {
|
||||||
.desired_width(ui.spacing().interact_size.x)
|
.desired_width(ui.spacing().interact_size.x)
|
||||||
.font(text_style),
|
.font(text_style),
|
||||||
);
|
);
|
||||||
|
// Only update the value when the user presses enter, or clicks elsewhere. NOT every frame.
|
||||||
|
// See https://github.com/emilk/egui/issues/2687
|
||||||
|
if response.lost_focus() {
|
||||||
let parsed_value = match custom_parser {
|
let parsed_value = match custom_parser {
|
||||||
Some(parser) => parser(&value_text),
|
Some(parser) => parser(&value_text),
|
||||||
None => value_text.parse().ok(),
|
None => value_text.parse().ok(),
|
||||||
|
@ -483,6 +486,7 @@ impl<'a> Widget for DragValue<'a> {
|
||||||
let parsed_value = clamp_to_range(parsed_value, clamp_range.clone());
|
let parsed_value = clamp_to_range(parsed_value, clamp_range.clone());
|
||||||
set(&mut get_set_value, parsed_value);
|
set(&mut get_set_value, parsed_value);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ui.memory_mut(|mem| mem.drag_value.edit_string = Some(value_text));
|
ui.memory_mut(|mem| mem.drag_value.edit_string = Some(value_text));
|
||||||
response
|
response
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue