Fix moving slider with arrow keys (#3354)

It would sometimes get stuck on the same value due to "smart-aim"
This commit is contained in:
Emil Ernerfeldt 2023-09-18 13:20:45 +02:00 committed by GitHub
parent ceb8723c5e
commit fea9047abe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -605,13 +605,14 @@ impl<'a> Slider<'a> {
let kb_step = increment as f32 - decrement as f32;
if kb_step != 0.0 {
let ui_point_per_step = 1.0; // move this many ui points for each kb_step
let prev_value = self.get_value();
let prev_position = self.position_from_value(prev_value, position_range);
let new_position = prev_position + kb_step;
let new_position = prev_position + ui_point_per_step * kb_step;
let new_value = match self.step {
Some(step) => prev_value + (kb_step as f64 * step),
None if self.smart_aim => {
let aim_radius = ui.input(|i| i.aim_radius());
let aim_radius = 0.49 * ui_point_per_step; // Chosen so we don't include `prev_value` in the search.
emath::smart_aim::best_in_range_f64(
self.value_from_position(new_position - aim_radius, position_range),
self.value_from_position(new_position + aim_radius, position_range),