diff --git a/crates/egui/src/memory.rs b/crates/egui/src/memory.rs index 7cd8e82020f..213d9c8b6a0 100644 --- a/crates/egui/src/memory.rs +++ b/crates/egui/src/memory.rs @@ -703,6 +703,12 @@ impl Memory { self.interaction().drag_id == Some(id) } + /// Get the id of the widget being dragged, if any. + #[inline(always)] + pub fn dragged_id(&self) -> Option { + self.interaction().drag_id + } + /// Set which widget is being dragged. #[inline(always)] pub fn set_dragged_id(&mut self, id: Id) { diff --git a/crates/egui/src/response.rs b/crates/egui/src/response.rs index 02d908d9723..108a24d9340 100644 --- a/crates/egui/src/response.rs +++ b/crates/egui/src/response.rs @@ -309,6 +309,14 @@ impl Response { self.dragged } + /// The Widget is being decidedly dragged. + /// + /// This helper function checks both the output of [`Self::dragged`] and [`crate::PointerState::is_decidedly_dragging`]. + #[inline] + pub fn decidedly_dragged(&self) -> bool { + self.dragged() && self.ctx.input(|i| i.pointer.is_decidedly_dragging()) + } + #[inline] pub fn dragged_by(&self, button: PointerButton) -> bool { self.dragged() && self.ctx.input(|i| i.pointer.button_down(button))