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)
|
||||
.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 {
|
||||
Some(parser) => parser(&value_text),
|
||||
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());
|
||||
set(&mut get_set_value, parsed_value);
|
||||
}
|
||||
}
|
||||
ui.memory_mut(|mem| mem.drag_value.edit_string = Some(value_text));
|
||||
response
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue