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());