From a59c8ac2c304706575f42844deb8f1f58552f0e0 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 21 Apr 2021 22:14:30 +0200 Subject: [PATCH] DragValue: only show extra decimal with shift down if currently dragged --- egui/src/ui.rs | 4 ++++ egui/src/widgets/drag_value.rs | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/egui/src/ui.rs b/egui/src/ui.rs index 4f087294..eb255cce 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -462,6 +462,10 @@ impl Ui { Id::new(self.next_auto_id) } + pub(crate) fn next_auto_id(&self) -> Id { + Id::new(self.next_auto_id.wrapping_add(1)) + } + pub(crate) fn auto_id_with(&self, id_source: IdSource) -> Id where IdSource: Hash + std::fmt::Debug, diff --git a/egui/src/widgets/drag_value.rs b/egui/src/widgets/drag_value.rs index 8bff0b9f..d9cd31f1 100644 --- a/egui/src/widgets/drag_value.rs +++ b/egui/src/widgets/drag_value.rs @@ -217,7 +217,8 @@ impl<'a> Widget for DragValue<'a> { max_decimals, } = self; - let is_slow_speed = ui.input().modifiers.shift_only(); + let is_slow_speed = + ui.input().modifiers.shift_only() && ui.memory().is_being_dragged(ui.next_auto_id()); let value = get(&mut get_set_value); let value = clamp_to_range(value, clamp_range.clone());