Conflicts: crates/tools/src/lib.rs, crates/tools/src/pen.rs and
crates/ui-egui/src/cursors.rs (add/add). The cursor work already in main is
kept as is (canvas.rs, ui-egui/src/lib.rs, tools tests.rs, ROADMAP.md take
main's version).
- pen.rs: the end-point check moves into hover_at as Hover::Continue, ahead
of Delete and Add; Down has one Continue arm and cursor() derives from
hover_at alone, so over a selected open path's end point the click
continues the path instead of deleting the anchor. Continuing from either
end (continue_from) is main's. The module doc is complete again.
- cursors.rs: Badge::Continue, the PenContinue glyph, and PenContinue in the
glyph test list.
- tests.rs: pen_over_a_selected_open_paths_end_point_continues_it.
load_swatches matched each name in a swatch exchange file against the
document, which by then held the file's earlier colors. A color whose
name the file had already used was dropped, or with replace it
overwrote the earlier color. A color with no name was added with an
empty name, and every later unnamed color was treated as a repeat of
it. A file of seven colors with a repeated name and three unnamed
colors added three of its six new colors.
load_swatches now names an unnamed color by its value, as object.color
names an unnamed color ("C=0 M=0 Y=0 K=55"), and sets named to false.
A name the file has already given gets the first free number ("Red 2",
"Red 3"), as Styles::unique_name numbers names. Names already in the
document follow the same rule as before: they are kept unless replace
is set, and a locked swatch is left unchanged. The swatch.load
description now states both rules.
Found while testing crates/engine/src/cmd/variables.rs:49
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In InDesign, selecting text and clicking other text with the Eyedropper
copies that text's character and paragraph formatting onto the selection
(Typefool's grid tutorial does it at 12:04 to give body copy the header's
settings). DesignCraft's Eyedropper always ran object.matchAttributes,
copying the clicked frame's fill and stroke onto the text frame.
New command type.pickUpFormat {frame, point}: the character format
(style + overrides) under the point goes to the selected characters, its
paragraph's style and overrides to their paragraphs, in one undo step.
The Eyedropper sends it when text is selected and a text frame is clicked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>