mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 17:56:50 -06:00
The Selection tool ended its Move interaction as soon as the pointer left the canvas, so the art jumped back to where it started while the pointer was over a toolbar or panel. As #2826 describes, the art should wait where it last moved and the move should continue when the pointer returns. Keep the interaction live while the pointer is off the canvas: Drag::Art holds the art where it last moved, and coming back clears the panel-drop payload and sends a Drag so the move goes on with the pointer. A release over a panel ends the move before the panels draw (release_over_panel, called from ui_frame), so a drop that takes art still gets it as it was and no interaction is left open. Tests: art_moved_off_the_canvas_waits_and_drops_on_the_panel, art_moved_off_the_canvas_resumes_when_the_pointer_returns and a_move_released_over_a_panel_ends_before_the_panels_draw cover the canvas states; a_move_dragged_onto_a_panel_reads_the_menus checks the full app waits over a panel and ends on release. cargo xtask ci: all 10 steps pass.