crates/tools/src/select.rs: dropped the doubled corner-pull block (the PR's copy of the old code and main's); kept one with main's content-mode fix and the stack's others field
crates/engine/src/tests.rs: kept main's tests and the PR's new test
crates/ui-egui/src/canvas/frames.rs: kept the PR's handle_shown filter
{"offset": [null, null, null, null]} parsed as an offset edit, so the custom
wrap boundary (from IDML) was dropped although no side changed. An array with
no number in it is no offset edit. Found by CodeRabbit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
path.moveAnchors treated a non-list points as absent and fell back to the
id/anchors form, so a request with a malformed points and an id moved that
path. Found by CodeRabbit on #1657.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
path.appendAnchor read `subpath` with as_u64, so -1 or "0" counted as omitted
and the point went onto the last subpath. Only an omitted (or null) subpath
means the last one now; any other value must be a valid index.
Found by CodeRabbit on #1657.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- selection.toggle dropping an item from the selection now drops its selected
points too. They stayed in selection.anchors, so the arrow keys still moved
points of a frame that was no longer selected.
- path.appendAnchor at the start moves the sub-path's selected points up one
place, as path.reverse remaps them, so they keep naming the same anchors.
Found by CodeRabbit on #1657.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
As InDesign: a selected anchor shows both its direction handles, and its
neighbours the handle that shapes the segment to it; with no anchor
selected no handle shows. Handles that don't show can't be grabbed (one
rule, select::handle_shown, for drawing and hit testing). The pen and the
anchor tools still show every handle. Under the anchor tools the selection
is drawn as its path and points, without the bounding box.
Found in the Learn Skills Daily course, chapter 43.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both change the Direct Selection tool: #902's corner pull now builds the
anchor drag with this branch's list of other selected anchors (none), so the
two build together; both sets of tests are kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`style.paragraph.create` and `style.character.create` refuse a `basedOn` or
`nextStyle` that is neither a style name nor null, instead of dropping it and
creating the style without the reference, as `style.paragraph.edit` does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Guides: a dragged guide shows where it is (#1282)
While a guide is dragged out of a ruler or moved, a label beside the
pointer reads X: or Y: and the guide's place, in the ruler units and
measured the way the rulers measure (from the zero point, and from the
page origin when rulers restart per page).
* Guides: keep the drag readout inside the canvas
Near the canvas's right or bottom edge the readout flips to the other
side of the pointer, and it is kept inside the canvas in every case
(readout_at).
* Guides: the drag readout measures the spread under the pointer
The readout measured from the spread in the middle of the view (where the
rulers measure), but a guide is dropped on the spread under the pointer,
so with spreads above one another the number shown could differ from the
guide's place. It now measures that spread (ruler_pieces_of).
* Guides: no readout for an existing guide over another spread
An existing guide moves only on its own spread (guide_drag), so dropped
over another it stays where it was: the readout no longer shows a place
there it won't go.
* #1282: guide selection commands (guide.select, guide.selectAll, guide.deselect, guide.moveBy)
* #1282: select ruler guides on the canvas, X/Y in the Control bar and Properties
* #1282: guides take clicks over objects, a new guide is selected, group drag preview
* ROADMAP: the progress line lands in one commit after the guide PRs
---------
Co-authored-by: SBaksa <sabaksa11@gmail.com>
With nothing in the place cursor there's no thumbnail to show, so the
cursor is the crosshair before a press too, as it already was while
dragging. (Review.)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>