Commit Graph
3889 Commits
Author SHA1 Message Date
dotCooCoo 01359bc753 Image Trace: a trace made off the UI thread applies only in its own document
A trace handed in for imageTrace.make or imageTrace.makeAndExpand was
matched by its object, image, pixels and settings alone, so a trace made
in one document could stand in for the command in another open document
with the same image and settings. The trace's inputs now carry the
document's uid: TraceRun::current is false in any other document, and the
commands there drop the trace handed in and trace their own image, as one
undo step.

Test: a_trace_run_applies_only_in_its_own_document.
2026-11-14 05:11:34 -08:00
dotCooCoo 0c1858f91e Merge main into fix/inflate-lazy-puffs 2026-11-14 05:11:29 -08:00
dotCooCoo bc24ad5352 Symbols: a symbol nested in symbol art is measured by its own art
Document::symbol_art_bounds measured a symbol's art without the
document, so an instance of another symbol in that art counted as the
20 x 20 square. It now measures the art through SymbolBoxes, so a nested
instance takes its own symbol's art, and an inline graphic of the outer
symbol is sized by it and follows it when that symbol changes.

- The inline resolve order also follows the instances that size a
  symbol's art, so a symbol is measured after the type in the art of
  the symbols it holds is laid out again.
- A symbol whose art reaches itself through an instance and an inline
  graphic is an empty slot. Only instances that the measurement uses
  count, so one a clipping path hides adds no dependency.
- A missing symbol, a symbol without art, a symbol that holds an
  instance of itself, and nesting 32 deep still measure as the square.
- SymbolBoxes finds symbols through a name index built once, and the
  inline resolve pass and inline_art_bounds share one index, instead
  of scanning the symbol list for each lookup.
2026-11-14 05:10:41 -08:00
dotCooCoo 8de86c9144 Merge main into fix/svg-rtl-absolute-chunks 2026-11-14 05:10:03 -08:00
dotCooCoo 9ced1772f4 Merge main into fix/sv-missing-message-rows 2026-11-14 05:09:50 -08:00
dotCooCoo b73de03cfd Merge main into fix/pdf-tiff-keeps-icc 2026-11-14 05:07:19 -08:00
dotCooCoo 0b37cf2880 Merge main into fix/cs-missing-message-rows 2026-11-14 05:05:52 -08:00
dotCooCoo bd672151fa Merge main into fix/issue-7525 2026-11-14 05:02:54 -08:00
dotCooCoo 0296e9e12f Merge main into perf/flatten-sweep-staggered-boxes 2026-11-14 05:01:31 -08:00
dotCooCoo 86bf36ad3a Merge main into fix/uk-missing-message-rows 2026-11-14 05:00:34 -08:00
dotCooCoo 98bf61bb53 Merge main into fix/objects-on-path-widgets-flatten-once 2026-11-14 05:00:14 -08:00
dotCooCoo b79ca7b1f7 Merge main into fix/dimension-second-point-guides 2026-11-14 04:59:53 -08:00
dotCooCoo 190e4be825 Merge main into fix/3d-masked-cap-graphic-once 2026-11-14 04:59:36 -08:00
dotCooCoo 0843e1e331 Merge main into fix/tiled-documents-own-profiles 2026-11-14 04:58:21 -08:00
dotCooCoo 0c1fb89757 Merge main into fix/map-links-stop-plates 2026-11-14 04:57:21 -08:00
dotCooCoo c482037570 Merge main into fix/3d-shadow-builds-once 2026-11-14 04:57:13 -08:00
dotCooCoo 7e28425f1c Merge main into feat/ai-insert-aki 2026-11-14 04:56:24 -08:00
dotCooCoo c826a254d0 Merge main into fix/vi-missing-message-rows 2026-11-14 04:56:19 -08:00
dotCooCoo bad6ee22ea Merge main into fix/place-text-utf16-no-bom 2026-11-14 04:55:27 -08:00
dotCooCoo 9911bb07bc Merge main into test/swatch-batch-spot-options-defaults 2026-11-14 04:55:11 -08:00
dotCooCoo a5664e3030 Merge main into feat/ai-style-named-gradients 2026-11-14 04:54:56 -08:00
dotCooCoo 09ac56f0c0 Merge main into feat/da-complete-messages 2026-11-14 04:54:52 -08:00
dotCooCoo 3474f7d123 Swatches: test Spot Colors options and Default Swatches replace in a batch
swatch.spotOptions and swatch.resetDefaults {replace: true} rewrite the
fill and stroke for new art through map_default_paints, which also runs
for command.batch steps. Two tests now run each command on its own and
as a batch step followed by a rectangle, and check that the default
paints and the rectangles match: a Lab spot link keeps its tint and
takes the Lab values or their CMYK equivalent in both directions, and a
link to a swatch the replace removes is dropped while the color stays.
Both tests fail when map_default_paints skips every interaction.

The progress line for swatch steps in a batch names the two commands and
the new tests.
2026-11-14 04:54:25 -08:00
dotCooCoo 0c892b5500 Merge main into fix/blend-reversed-key-stroke-direction 2026-11-14 04:51:02 -08:00
dotCooCoo b651301b1e Merge main into fix/learn-panel-commands 2026-11-14 04:50:50 -08:00
dotCooCoo 3597752c63 Merge main into fix/graph-wedge-legend-black-kept 2026-11-14 04:50:46 -08:00
dotCooCoo baf9905ba0 Merge main into fix/plugin-store-folder-lock 2026-11-14 04:50:30 -08:00
dotCooCoo 9fb76c5c7a Merge main into fix/remove-breaks-named-locked-type 2026-11-14 04:50:25 -08:00
dotCooCoo 84669d1c88 Merge main into fix/live-paint-make-drawn-rows 2026-11-14 04:50:21 -08:00
dotCooCoo 4ca74c02c8 Merge main into fix/pt-br-missing-message-rows 2026-11-14 04:49:50 -08:00
dotCooCoo 496ed1c9e9 Merge main into fix/tabbed-rtl-negative-tracking-break-bound 2026-11-14 04:49:19 -08:00
dotCooCoo add6938441 Merge main into fix/links-stored-brush-art 2026-11-14 04:49:13 -08:00
dotCooCoo 5dcf172325 Merge main into fix/monitor-profile-after-blending 2026-11-14 04:48:42 -08:00
dotCooCoo abf93e31d7 Canvas: translucent art blends with the paper before the monitor profile
With Use Monitor Profile for Canvas converting, the art's raster was
converted on its own and then drawn over the separately converted
paper, so a translucent fill or an antialiased edge showed
blend(convert(art), convert(paper)) rather than the converted blend.

Each pixel with partial alpha over an artboard's paper, a colored
artboard, the transparency grid or Hide Artboards' paper now gets the
color that, drawn over the converted paper, shows the art blended with
the paper in sRGB and then converted. Its alpha is kept, so a grid
drawn in back still shows through. Opaque and empty pixels, art over
the pasteboard and Outline convert as before, and with no profile to
convert into nothing changes.

The frame rendered whole, the part an edit renders again, the render
worker's frame (and the pan fill), and the other windows' panes all
use the same rule. The paper is part of the canvas cache key, so
turning the grid on or hiding the artboards renders the art again.
2026-11-14 04:48:22 -08:00
dotCooCoo 1fe52fc5b6 Merge main into fix/separations-spot-stop-plates 2026-11-14 04:47:00 -08:00
dotCooCoo 779591f5ca Merge main into fix/wayland-paste-copied-files 2026-11-14 04:46:48 -08:00
dotCooCoo 6050e48b5d Merge main into docs/complete-message-languages 2026-11-14 04:46:28 -08:00
dotCooCoo 6ab46b5fd8 Print: a spot gradient stop prints its process plates on the separations
A gradient stop linked to a spot ink that also carries process plates
(a DeviceN stop opened from a PDF) printed only its spot tint: print
separations and Separations Preview left its Cyan, Magenta, Yellow and
Black plates blank. They now print the stop's plates beside the tint.
With spots printed as process, each process plate prints the stop's
plate layered with the spot tint's process equivalent, as a separated
image's spot plates layer. Plates beside no spot link, or beside
Registration, still print nothing of their own.

The color visitor also skipped a freeform gradient's points, so print
plates kept their display colors and Document Color Mode left them
unconverted. The points are now visited as unlinked colors.
2026-11-14 04:46:10 -08:00
dotCooCoo dd6449eca2 Merge main into fix/ja-message-rows 2026-11-14 04:44:38 -08:00
dotCooCoo fbe60fdcbb Merge main into fix/action-batch-step-number 2026-11-14 04:44:33 -08:00
dotCooCoo 84a1294e6e Merge main into fix/convert-to-text-locked-frames 2026-11-14 04:44:20 -08:00
dotCooCoo b1700e06cf Merge main into fix/brush-freehand-unknown-brush 2026-11-14 04:41:48 -08:00
dotCooCoo f37c5c293e Brushes: brush.freehand refuses a brush or style it cannot use
brush.freehand drew the plain path when `brush` named no brush in the
document or was not a string, and drew a pencil stroke for any `style`
other than "brush". It now refuses an unknown name with "no brush named
`<name>`", as brush.apply and brush.setCurrent do, a `brush` that is not
a string, and a `style` other than "pencil" or "brush". The document does
not change and no undo step is recorded. A `brush` left out or null still
draws the plain path.

The Paintbrush skips a tool brush or current brush that has been deleted
and paints with the other, or draws the plain path when neither is in the
document, so a stroke after a brush is deleted is not refused.
2026-11-14 04:41:02 -08:00
BFlat a47d7eec91 Merge pull request #7478 from dotCooCoo/fix/export-selection-pdf-options
Export Selection: the picked format's options dialog follows the save panel
2026-11-14 19:38:30 +07:00
BFlat 73b9eee842 Merge pull request #7151 from dotCooCoo/fix/i18n-literal-brace-messages
i18n: messages with literal braces match only their own catalog row
2026-11-14 19:38:19 +07:00
BFlat c1d153c051 Merge pull request #7485 from dotCooCoo/fix/quit-hides-all-windows-wayland
Clipboard: quitting on Linux takes every window off screen before the clipboard wait
2026-11-14 19:38:10 +07:00
BFlat 95c9f347d6 Merge pull request #7507 from dotCooCoo/feat/cjk-tsume
Type: Tsume narrows the space around each character's ink
2026-11-14 19:38:02 +07:00
BFlat 67f432c965 Merge pull request #7502 from dotCooCoo/fix/revolve-local-depth-order
Revolve: overlapping faces draw in the order of their depths where they overlap
2026-11-14 19:37:37 +07:00
dotCooCoo 00767dcf57 Color: picked gradient mesh points are the color the panels show and edit
With points of a gradient mesh picked (Mesh tool, Direct Selection or the
Lasso), a solid fill color from the Color panel recolors just those points,
but the Fill proxy, the Color panel, the Color Wheel and the Control bar's
fill chip kept showing the mesh object's own fill, so the panel's sliders
jumped back after each drag.

- The new `Session::fill_mesh_points` resolves the targets as
  `paint.setFill` does: the picked points of every selected mesh, unless the
  Appearance panel's active row is a fill or an object of a symbol instance
  is selected. When the first selected object is a mesh among them, the Fill
  proxy (`paint.proxies`) shows its first picked point's color, and "?"
  compares the picked points' colors with each other and with the other
  selected objects' fills.
- `Session::mesh_points_picked` lists the points `transparency.set` fades: it
  is empty while the Appearance panel's active row takes the opacity, and
  `transparency.info` and the Transparency panel now follow it there too.
- The cached "?" state and the Transparency panel's values are recomputed when
  other points are picked, which gives the document no new revision.
- The Control bar's opacity shows the first picked point's opacity, which
  `transparency.set` changes then.
- The `paint.setFill` and `transparency.set` params texts name the picked
  points instead of the point last clicked, and the `paint.proxies` text,
  docs/mcp.md and the progress doc describe what the panels show.
2026-11-14 04:32:44 -08:00
dotCooCoo bfa0c8e15e Dimensions: an opened file redraws its labels in its own composite fonts
When a document opens or is reverted with dimensions whose art is not in
its color mode, the dimensions are drawn again before the document's
composite fonts are registered. A label whose font names a composite font
that another open document defines differently was measured in that other
definition, so it was centered off its anchor. The redraw now measures the
labels in the document's own composite fonts, in front and in the back.
2026-11-14 04:31:29 -08:00