mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-12 21:23:02 +00:00
* Add path text placement ranges and drag gestures * Preview path placement and track bounded canvas damage * Preserve legacy path anchors and show overflow markers * Match path marker hit targets and directional cursors * Fix path placement lint failures * Cover path text body movement and position locks * Keep open path text movable at range endpoints * Target the type path after attaching text * Fix path text range rendering and placement lifecycle * Map vertical path text and preserve drag branch continuity * Cover path placement lifecycle and preview damage regressions * Preserve closest branch projection and fix CI regressions * Normalize path endpoints and bind gestures to their viewport * Simplify viewport ownership guards for Clippy * Document path placement invariants and regression cases * Fix path placement ownership, validation and geometry caching * Correct path placement regression fixtures * Ignore transient path geometry cache in UI state equality * fix: allow path text flips with stale placement ranges * fix: retain path text handles after shortening curves * test: account for layer translation in path placement drags * fix: mark path text range with x and o markers on the path The beginning marker is an x and the end a small circle, both on the path, with a plus in the circle while the range hides glyphs. The cursor's triangle points right over the beginning, left over the end, and both ways over the text body, which moves the whole range. Direct Selection leaves an anchor or handle under a marker to path editing; Path Selection always takes the marker. * fix: resolve coincident path text markers by lap or drag direction The x and o markers coincide on a closed path's full lap and on an empty or end-clamped open range. A full lap now moves the whole text; otherwise the first motion picks the beginning (backward) or the end (forward). Marker fixtures press on the path, where the markers now sit. * fix: let either end of a full-lap path text range be dragged Text attached to a closed path fills one lap, so its x and o markers coincide and every press moved the whole text, leaving no way to shorten the range. As the text begins just ahead of that point and ends just behind it, a press ahead along the path now grabs the beginning and one behind grabs the end; the point itself still moves the whole text. * test: check full-lap marker drags do not flip the text * fix: read and write the path text range in PSD Type on a path keeps its range in the Txt2 frame as /2 /6 [start end], in curve-segment units with -1 for the default. Three reference-editor files in ag-psd's test set fix the mapping: text-path ends a third into the first segment and draws only "so" of "some text", and text-path-26/27 move the start on an open path. Import reads both ends (and the flipped flag) into the layer's start and end. Export writes an open path whole with its start and end in the range, instead of cutting the path at the start, and a closed path's limited end as a range from its start. Path text in a document that never came from a PSD now gets a Txt2 block, so its path is saved at all, and the warning that the end limit is lost is gone. * fix: let both selection tools grab a path text marker on an anchor Direct Selection gave an anchor under a marker the click, so an open path's default markers (on its end anchors) and a closed path's coincident full-lap markers (on its first anchor) could not be moved with that tool. In the reference editor either selection tool drags a marker wherever the pointer shows the text bar with a triangle, so the marker now wins for both tools. The Direct Selection tests for reshaping a type path (#9114) drag its last anchor, where the default end marker sits; they now end the range short of it. To reshape at an anchor under a marker, drag the marker off it or select the anchor with a marquee and nudge it. * fix: keep explicit and empty path text ranges through PSD An explicit end at the path's end stays explicit, so centered and right type keeps its alignment within the span. A closed range whose ends meet reads as empty, not as a full lap. * ci: re-run checks after a download outage * ci: re-run checks after a download outage * fix: preserve legacy path text anchors through PSD * ci: re-run checks against current main --------- Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>