From 32f35c6251a562b878643e4d4b3419e4e2013453 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 20 Feb 2021 17:43:35 +0100 Subject: [PATCH] Implement "Smart Aim" for DragValue --- egui/src/widgets/drag_value.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/egui/src/widgets/drag_value.rs b/egui/src/widgets/drag_value.rs index cb5e47aa..2ed6b28e 100644 --- a/egui/src/widgets/drag_value.rs +++ b/egui/src/widgets/drag_value.rs @@ -210,7 +210,15 @@ impl<'a> Widget for DragValue<'a> { let stored_value = stored_value + delta_value as f64; let stored_value = clamp(stored_value, clamp_range.clone()); - let rounded_new_value = emath::round_to_decimals(stored_value, auto_decimals); + let rounded_new_value = stored_value; + + let aim_delta = ui.input().aim_radius() * speed; + let rounded_new_value = emath::smart_aim::best_in_range_f64( + rounded_new_value - aim_delta as f64, + rounded_new_value + aim_delta as f64, + ); + let rounded_new_value = + emath::round_to_decimals(rounded_new_value, auto_decimals); let rounded_new_value = clamp(rounded_new_value, clamp_range); set(&mut value_function, rounded_new_value);