Commit Graph
10 Commits
Author SHA1 Message Date
dotCooCoo cb429813f3 Selection colors: Create style keeps the variables bound to the row's paint
selection.createColorStyle gives the new style the variable bindings of the fill or stroke it is made from, the color and the gradient stops, so linked layers keep following the variables. Targets bound to different variables are refused, and the Styles menu leaves Create style out for them.
2026-10-31 04:58:28 -07:00
dotCooCoo 1b7d9221e2 Selection colors: a library that is not a string is refused instead of linking a local style
selection.applyColorStyle chose the library path only when `library` read as a string, so an
object or array fell through and linked a local style of the same name. Any non-null `library`
now goes to the library lookup, which refuses a non-string before any change.
2026-10-31 04:47:01 -07:00
dotCooCoo 889983ffe2 Selection colors: Create style refuses a row whose fill or stroke list holds other paints
A created style holds the row's one paint, and linking it replaces the target's whole fill or
stroke list, so a layer with other fills or strokes lost them. selection.createColorStyle now
refuses such targets before any change, and the Styles menu leaves Create style out for those
rows.
2026-10-31 04:41:03 -07:00
dotCooCoo c7cd72b09e M3: Selection colors rows apply library color styles and create a style
A row's Styles menu lists this file's color styles (library copies are no
longer listed as local), then each enabled library's published color
styles under the library's name. Choosing a library style copies it in,
linked and read-only, and applies it to every fill and stroke the row
stands for in one undo step (selection.applyColorStyle with `library`).
A row linked to a style or variable now has the Styles button too, so it
can switch to another style.

Create style on an ordinary row opens a window with the next free
"Color n" name. Create makes a style of the row's whole paint (gradient
stops, opacity and blend mode included) and links it to every target in
one undo step (selection.createColorStyle {targets, name, description?}).
A name another style has, an empty name, or a row whose slots no longer
share one paint is refused, and the window stays open. Text ranges with
fills of their own take the style's value without a link.
2026-10-31 04:28:23 -07:00
NetterSilverandClaude Opus 5.5 33ddb44016 Resolve stored variable ids by exact id, not by variable name
Fixes #1513

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:11:48 +01:00
bflatastic c6d43e7903 Merge main into #607 2026-10-26 09:20:09 +07:00
aiongg 92682728e9 Follow-ups from the #1311 review: link notice clicks, variable scopes, corner tooltip (#1316)
* Prototype player: no clicks reach the prototype behind the link notice

* Selection colors: scopes filter the variable menu; the command binds as variable.bind does

* Style picker: color variables scoped to every selected layer's fill or stroke

* Corner button: named Corner smoothing on polygons and stars

* docs/gaps.md: known gaps from the #1311 review

* cargo fmt

* Style picker: clippy
2026-10-25 01:09:29 -04:00
dotCooCoo ce8e9a7d60 M3: apply and detach color variables from Selection colors
A Selection colors row could take a color style but not a color
variable, and a row linked to a style or variable could not be
unlinked from there.

selection.bindColorVariable binds a color variable to every solid fill
and stroke slot a row stands for. It replaces a color style on that
list and any earlier binding of the slot. A text range with fills of
its own takes the variable's value in the layer's modes. Gradients and
slots outside the variable's scopes are refused.
selection.detachColor unlinks the style or variable of a row's slots
and keeps their colors.

In the Design panel, the Styles menu of an unlinked row lists the
document's color variables after its color styles, and a linked row
shows a Detach button in the Styles button's place.
2026-10-24 01:10:25 -07:00
bflatastic 2912222c53 #607: the outline-stroke tests join the engine's one integration test binary (tests/it) 2026-10-24 10:02:53 +07:00
aiongg fc7a744519 CI: one test binary per crate, nextest, line tables only (#1208)
* Dev profile: line tables for workspace crates, no debug info for dependencies

* Tests: one integration-test binary per crate with several test files

* xtask ci: nextest, doctests, tests without examples, --keep-going; add xtask test
2026-10-23 13:01:12 -04:00