From de739425cb41d13fd3f0636017101889cbaba0e7 Mon Sep 17 00:00:00 2001 From: Hojjat Date: Wed, 26 Aug 2026 17:25:53 -0600 Subject: [PATCH] fix: rubber band selection not redrawing on mouse movement --- src/mouse_area.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/mouse_area.rs b/src/mouse_area.rs index 73bd710..8f52546 100644 --- a/src/mouse_area.rs +++ b/src/mouse_area.rs @@ -563,6 +563,16 @@ fn update( state.last_position = position_in; } + if state.drag_initiated.is_some() + && matches!( + event, + Event::Mouse(mouse::Event::CursorMoved { .. }) + | Event::Touch(touch::Event::FingerMoved { .. }) + ) + { + shell.request_redraw(); + } + if let Event::Mouse(mouse::Event::CursorMoved { position }) = event { let virtual_position = Point::new( viewport.x - layout_bounds.x + position.x, @@ -639,6 +649,7 @@ fn update( { state.drag_initiated = None; state.prev_click = None; + shell.request_redraw(); if let Some(message) = widget.on_drag_end.as_ref() { shell.publish(message(cursor.position_in(layout_bounds))); } @@ -658,7 +669,9 @@ fn update( state.prev_click = None; return; } - state.drag_initiated = None; + if state.drag_initiated.take().is_some() { + shell.request_redraw(); + } if let Some(message) = widget.on_release.as_ref() { shell.publish(message(cursor.position_in(layout_bounds)));