mirror of
https://github.com/storytold/figcraft.git
synced 2026-11-07 11:03:15 +00:00
* M1: dragging a gradient handle on the canvas keeps the colour picker open (#1852) A press on one of the open gradient's handles or stops closed the picker: the canvas took the press and began the drag, then the picker, drawn later in the same frame, saw a press outside its card and closed, committing the drag's interaction at once. The handles vanished with the picker and the drag went on without an undo step of its own. The handles are the picker's controls: while a gradient handle or stop drags (`handles::gradient_dragging`, the press included) the picker doesn't close on an outside press, as it already doesn't while the eyedropper samples. A press elsewhere on the canvas still closes it. Docs: ui-parity.md. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * M1: a handle drag released off the canvas ends there (#1852) Review: a gradient handle drag whose button went up over a panel, over the colour picker or outside the window stayed stashed, its interaction uncommitted, until the pointer was back on the canvas, and the next press there moved the handle to wherever it landed; with the picker now held open while a gradient drag is stashed, it would also have stayed open meanwhile. `handles::end_released_drag` commits and clears a stashed drag when the button is up, called from the canvas input's off-canvas branch and when the pointer is over something drawn above the canvas. Test: `a_gradient_drag_released_off_the_canvas_ends_there` (released over the sidebar and over the picker). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * M1: a handle drag ends on a release over a ruler, and when Escape or Undo closes its gesture (#1852) The release check ran only where the pointer was not on the canvas, after the comment pins and ruler guides had their turn; both return early, so a gradient handle released over a ruler stayed dragged, uncommitted, until the next press. It now runs first, wherever the pointer is, and the frame it ends a drag on is the handle's, as the release on the handle itself was. Escape (the picker closes and commits) or Undo can also close the gesture while the button is still down. The stashed drag then kept setting the fill every frame with no gesture open, one undo step a frame; with no gesture open the drag is now over. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>