Commit Graph
7741 Commits
Author SHA1 Message Date
BFlat 60e397c6cb Merge pull request #5338 from Prin-Ing/fix/5252-flatten-transparency-doesn-t-spl
Group flattened multi-line transparent type by line
2026-11-03 17:18:11 +07:00
Prin.IngandClaude Opus 5.5 2380e889bc Group flattened multi-line transparent type by line
Fixes #5252

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:00:52 +07:00
BFlat 329d923750 Merge pull request #5150 from dotCooCoo/fix/ai-os10-pathfinder
.ai import: Effect › Pathfinder on a group opens as a live effect
2026-11-03 16:59:16 +07:00
BFlat 0b4ebc00ea Merge pull request #5189 from dotCooCoo/fix/ai-os22-g1
.ai import: version 7 pattern definitions come in as pattern swatches
2026-11-03 16:59:00 +07:00
BFlat d7de484b28 Merge pull request #5225 from dotCooCoo/fix/ligature-caret-positions
Type: the caret, a click and the arrow keys reach the characters inside a ligature
2026-11-03 16:58:44 +07:00
BFlat 5a2e76205d Merge pull request #5151 from dotCooCoo/fix/vars-p14
Variables: Import Data Sets reads every column as a variable and replaces the data sets
2026-11-03 16:58:27 +07:00
BFlat 8b3d750f39 Merge pull request #5217 from dotCooCoo/feat/find-font-replace-with-font-from
Type: Find Font's Replace With Font From lists the document's, recent or installed fonts
2026-11-03 16:58:12 +07:00
BFlat da64e9a915 Merge pull request #5204 from dotCooCoo/fix/find-font-noop-undo
Find Font: Change and Change All add no undo step when no text changes
2026-11-03 16:57:55 +07:00
bflatastic 58faa73909 .ai import: drop the SDK mirror citation from the Pathfinder Add keys 2026-11-03 16:39:05 +07:00
dotCooCoo a870da6c7d .ai import: Effect › Pathfinder on a group opens as a live effect
Squashed from #5150 onto main.
2026-11-03 16:38:47 +07:00
dotCooCoo f62e502f1c .ai import: version 7 pattern definitions come in as pattern swatches
Squashed from #5189 onto main.
2026-11-03 16:38:42 +07:00
dotCooCoo e1ea0ecad1 Type: the caret, a click and the arrow keys reach the characters inside a ligature
Squashed from #5225 onto main.
2026-11-03 16:38:36 +07:00
dotCooCoo 86deb546ad Variables: Import Data Sets reads every column as a variable and replaces the data sets
Squashed from #5151 onto main.
2026-11-03 16:38:29 +07:00
dotCooCoo fbab0bdd43 Type: Find Font's Replace With Font From lists the document's, recent or installed fonts
Squashed from #5217 onto main.
2026-11-03 16:38:24 +07:00
dotCooCoo af17c648c0 Find Font: Change and Change All add no undo step when no text changes
Squashed from #5204 onto main.
2026-11-03 16:38:17 +07:00
BFlat 93a0dd11cf Merge pull request #5262 from thisisgomaa/perf/compound-path-geom-cache
Render: a compound path's members are assembled once and kept with the node
2026-11-03 16:36:11 +07:00
BFlat eb57f92125 Merge pull request #5261 from thisisgomaa/perf/hit-test-culls-by-control-bounds
Selection: a click on a large compound path is culled by its control points
2026-11-03 16:35:55 +07:00
BFlat c859ebd2cc Merge pull request #5331 from dotCooCoo/feat/font-field-scroll-preview
Type: step font families with the mouse wheel
2026-11-03 16:35:38 +07:00
BFlat 17e9d28fb1 Merge pull request #5275 from dotCooCoo/feat/objects-on-path-spacing
Objects on Path: the Space widget spaces the attached objects along the path
2026-11-03 16:35:22 +07:00
BFlat e361ddf5f9 Merge pull request #5332 from ham9zah/feat/path-type-bracket-reach
Path type brackets: 8 px reach, hover highlight, and the nearest of a bracket and a port takes the press
2026-11-03 16:35:05 +07:00
BFlat f6087351e6 Merge pull request #5326 from dotCooCoo/docs/feature-status-records
Update SVG, type, recoloring, and symbol feature records
2026-11-03 16:34:45 +07:00
BFlat cdb7634b5a Merge pull request #5328 from dotCooCoo/fix/select-same-nonempty-text
Exclude empty runs from matching text selections
2026-11-03 16:34:29 +07:00
BFlat 32acec9309 Merge pull request #5325 from dotCooCoo/fix/svg-decoded-id-selector
Preserve SVG styles with encoded attribute selectors
2026-11-03 16:34:13 +07:00
BFlat e91da37341 Merge pull request #5256 from dotCooCoo/fix/arrange-tile-review
Window: Tile with one document open leaves the documents under their tabs
2026-11-03 16:33:57 +07:00
BFlat 11a95d708f Merge pull request #5295 from dotCooCoo/feat/arrange-d
Window: with Open Documents As Tabs cleared, new documents open in windows
2026-11-03 16:33:42 +07:00
BFlat 41016cd261 Merge pull request #5286 from dotCooCoo/feat/arrange-c
Window: drag a document tab out to float it, and a window back to dock it
2026-11-03 16:33:26 +07:00
BFlat 9b34748543 Merge pull request #5278 from dotCooCoo/feat/arrange-b
Window: Float in Window, Float All in Windows and Cascade float documents
2026-11-03 16:33:09 +07:00
BFlat 4085f9083f Merge pull request #5255 from dotCooCoo/feat/char-style-options-color-opentype
Character Styles: Style Options sets character color and OpenType features
2026-11-03 16:32:52 +07:00
BFlat 8c52832b8a Merge pull request #5234 from dotCooCoo/fix/dropped-press-cancels-tool
Canvas: a dropped press cancels the tool's drag instead of ending it
2026-11-03 16:32:35 +07:00
BFlat e2d7988b02 Merge pull request #5268 from dotCooCoo/fix/release-frame-moves
Canvas: moves after the button-up do not join a stroke
2026-11-03 16:32:18 +07:00
BFlat 3c854c7289 Merge pull request #5277 from dotCooCoo/fix/measure-shift-snap
Measure: a Shift-drag snaps its end point on its 45° step
2026-11-03 16:32:02 +07:00
BFlat ee46dea2d4 Merge pull request #5257 from dotCooCoo/fix/text-setstyle-stroke
Type: text.setStyle sets the text's stroke as well as its fill
2026-11-03 16:31:45 +07:00
BFlat b3bfb3ae56 Merge pull request #5276 from dotCooCoo/fix/keymap-iso-key
Fix #4559: shortcuts can use the ISO key next to left Shift
2026-11-03 16:31:30 +07:00
BFlat 1c47e8386e Merge pull request #5288 from storytold/fix/sec-dxf-import-budgets
DXF import: budget dash patterns, copied text and names, and block items looked at
2026-11-03 16:31:13 +07:00
BFlat aa5f7ece8e Merge pull request #5299 from storytold/fix/sec-icc-duplicate-tags
ICC: refuse a profile whose tag table lists a tag twice
2026-11-03 16:30:57 +07:00
BFlat 8e9e79afc7 Merge pull request #5305 from storytold/fix/sec-export-settings-no-passwords
Export for Screens: keep PDF passwords out of remembered settings
2026-11-03 16:30:42 +07:00
BFlat 6b53f115a4 Merge pull request #5307 from storytold/fix/sec-flatten-overlap-index
Flatten Transparency: group overlapping objects without comparing every open pair
2026-11-03 16:30:27 +07:00
BFlat 2aba975488 Merge pull request #5301 from storytold/fix/sec-clipboard-png-side
Clipboard: leave out the PNG of art too large to scale to 4096 pixels
2026-11-03 16:30:11 +07:00
BFlat 05a189b8e8 Merge pull request #5323 from JonRC/fix/eps-currentfile-executed-file
Fix #5321: `currentfile` in a file being run is that file
2026-11-03 16:29:55 +07:00
BFlat 431958668b Merge pull request #5319 from JonRC/fix/eps-known-composite-key
Fix #5318: `known` answers false for keys no dictionary holds
2026-11-03 16:29:40 +07:00
BFlat 18b2acd426 Merge pull request #5317 from JonRC/fix/eps-encoding-resources
Fix #5316: StandardEncoding and ISOLatin1Encoding are Encoding resources
2026-11-03 16:29:24 +07:00
BFlat 8e4a865bd6 Merge pull request #5306 from storytold/fix/sec-place-queue-scope
Place: the place cursor reads its files within the roots it was loaded in
2026-11-03 16:29:13 +07:00
BFlat 1836abe4cb Merge pull request #5303 from storytold/fix/sec-thread-reflow-unique-frames
Threaded text: a frame listed twice flows the story once
2026-11-03 16:28:57 +07:00
BFlat 44ecfcc655 Merge pull request #5293 from storytold/fix/sec-brush-mask-root-symbol
Brushes: leave out an opacity mask whose root symbol draws a brushed stroke
2026-11-03 16:28:42 +07:00
BFlat 139fb217f4 Merge pull request #5329 from cybermaxwel/fix/zh-hans-luminosity-20261103
Fix Simplified Chinese translation of Luminosity
2026-11-03 16:28:24 +07:00
Ahmed Gomaa 1d011ab8ad Render: a compound path's members are assembled once and kept with the node
A compound path was assembled from its members in every frame it was
drawn, and Node::stroke_path grew its buffer by doubling, copying the
path into ever larger buffers for a compound path of many anchors. The
renderer's geometry cache was swept only once it held more than 1,024
entries, so while an object was dragged (a new node, and layer, in
every frame) the old copies stayed alive with all their members.

Now:
- a compound path is drawn from the path the renderer keeps for it in
  its geometry cache, as a plain path already was, and is assembled
  only when the node changes;
- Node::stroke_path sizes a compound path's buffer up front from its
  members' segment counts (the same elements, in the same order);
- unused geometry entries are dropped after a few frames however few
  entries there are.

Tests:
- crates/render/src/tests/memory.rs: the second frame draws the kept
  path and the same pixels as the first and as a new renderer; after a
  five-frame move the renderer no longer holds the compound path drawn
  before it. The test fails without the renderer change.
- crates/doc/src/node/tests.rs: a compound path's path is its members'
  paths in order (open, closed, empty and single-anchor members).

Not timed; vectorcraft-cli perf was not rerun.
2026-11-03 16:03:40 +07:00
Ahmed Gomaa f0e72fb11a Selection: a click on a large compound path is culled by its control points
Every click and hover measured each path and compound path along its
curves to cull it (Node::reach_bounds_with), and a compound path was
then assembled whole to test its outline and fill. For a compound path
of thousands of members that took milliseconds per click.

Hit testing now culls paths and compound paths by the box of their
control points (which holds the curves), grown by their strokes' reach,
so the box is never smaller than the reach box it replaces. A compound
path's outline and fill are tested against only the members whose
control box, grown by the tolerance, holds the point: a member outside
that box is farther than the tolerance and winds zero times round the
point. Painted strokes still follow the whole compound path (alignment,
dashes, width profiles) and are measured along all of it, as before.

Tests (crates/doc/src/hit/tests.rs):
- a 2,000-member compound path hits exactly as the whole-path test did,
  at random points, on and next to anchors and on the edges of the
  members' boxes, for both fill rules, in Outline view and with Object
  Selection by Path Only;
- wide strokes painting past the control points are still hit, for a
  path and a compound path;
- the cull box holds the reach box for paths and compound paths.

Measured in a debug test build (one run, machine not idle): a click on
a 20,000-member compound path went from about 18 ms to about 1 ms.
vectorcraft-cli perf was not rerun.
2026-11-03 16:03:40 +07:00
dotCooCoo 84db6a54a0 Type: discard queued font wheel turns after text selection changes 2026-11-03 16:03:40 +07:00
dotCooCoo 2b29a680f3 Objects on Path: the Space widget spaces the attached objects along the path
With one Objects on Path group of two or more objects selected, the
Selection and Objects on Path tools show a square Space widget beyond the
last object, ahead along the path. Dragging it moves the last object
along the path, around its bends, as far as the pointer moves along it,
and the objects between follow evenly while the first one stays. With
Alt (Option on macOS) the objects spread from both ends toward or away
from the center of an open path, or of the first anchor of a closed one.
The distance between the objects shows next to the pointer in the
document's units; the drag is one undo step, and Escape cancels it.

- object.objectsOnPath.options takes spacing (points, or "auto", the
  default even spread) and start (points from the first anchor). A
  spacing the path has no room for is drawn smaller and kept, so a
  longer path brings it back. Older files read as Auto.
- Moving the group, Pivot, Rotate, path edits, copies and saving keep
  the Space. Scaling, rotating or shearing the group keeps the first
  and last objects where the transform takes them on the new path, live
  shapes included; a value that cannot be kept that way scales with the
  path's length.
- The Rotate All widget follows the first object when Space moves it.

Behavior: https://helpx.adobe.com/illustrator/desktop/manage-objects/arrange-objects/rearrange-and-edit-objects-on-a-path.html
and https://helpx.adobe.com/illustrator/using/objects-on-path.html.
2026-11-03 16:03:40 +07:00
ham9zah 2bc284aa25 Path type brackets: 8 px reach, hover highlight, and the nearest of a bracket and a port takes the press
Squashed from #5332 onto main.
2026-11-03 16:03:40 +07:00