From f0899a2a8192ed66f9d9bf00e3643194820239e6 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 11 Mar 2026 10:14:33 -0400 Subject: [PATCH] fix(mouse area): on_drag --- widget/src/mouse_area.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/widget/src/mouse_area.rs b/widget/src/mouse_area.rs index bee130f5..1f62c6ec 100644 --- a/widget/src/mouse_area.rs +++ b/widget/src/mouse_area.rs @@ -406,8 +406,15 @@ fn update( let state: &mut State = tree.state.downcast_mut(); let cursor_position = cursor.position(); + if cursor_position.is_none() { + state.drag_initiated = None; + return; + } + if let Event::Mouse(mouse::Event::CursorMoved { .. }) - | Event::Touch(touch::Event::FingerMoved { .. }) = event + | Event::Touch(touch::Event::FingerMoved { .. }) + | Event::Mouse(mouse::Event::CursorLeft) + | Event::Touch(touch::Event::FingerLost { .. }) = event { let was_hovered = state.is_hovered; let bounds = layout.bounds(); @@ -484,6 +491,7 @@ fn update( if let Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) | Event::Touch(touch::Event::FingerLifted { .. }) = event { + state.drag_initiated = None; if let Some(position) = cursor_position { let new_click = mouse::Click::new( position,