diff --git a/crates/bevy_picking/src/events.rs b/crates/bevy_picking/src/events.rs index 4528001f0e429..4fb10121efde8 100644 --- a/crates/bevy_picking/src/events.rs +++ b/crates/bevy_picking/src/events.rs @@ -351,6 +351,15 @@ pub struct PointerButtonState { pub dragging_over: HashMap, } +impl PointerButtonState { + /// Clears all press and drag data tracked for this button on its pointer. + pub fn clear(&mut self) { + self.pressing.clear(); + self.dragging.clear(); + self.dragging_over.clear(); + } +} + /// State for all pointers. #[derive(Debug, Clone, Default, Resource)] pub struct PointerState { @@ -379,9 +388,7 @@ impl PointerState { pub fn clear(&mut self, pointer_id: PointerId) { for button in PointerButton::iter() { if let Some(state) = self.pointer_buttons.get_mut(&(pointer_id, button)) { - state.pressing.clear(); - state.dragging.clear(); - state.dragging_over.clear(); + state.clear(); } } } @@ -699,9 +706,7 @@ pub fn pointer_events( } // Finally, we can clear the state of everything relating to presses or drags. - state.pressing.clear(); - state.dragging.clear(); - state.dragging_over.clear(); + state.clear(); } // Moved PointerAction::Move { delta } => {