Commit Graph
3755 Commits
Author SHA1 Message Date
dotCooCoo 04b0be2c9f Merge main into feat/live-rasterize-effect 2026-10-17 04:09:12 -07:00
BFlat e78116e0a2 Merge pull request #2609 from dotCooCoo/fix/history-labels-translated
i18n: the History panel translates the undo step names the sources write as literals
2026-10-17 17:41:28 +07:00
bflatastic 351612c978 i18n: Dutch, Danish and Indonesian undo-step names for the History panel (#2609) 2026-10-17 17:26:59 +07:00
dotCooCoo 7930a0456b i18n: the History panel translates the undo step names the sources write as literals
The History panel looked up each step's name with tl!, which reads only
a plain catalog row. 95 of the 427 names that the engine, the tools and
the shell give their undo steps had no such row in at least one complete
catalog, and 83 had no row at all (Make Blend, New Guide, Pen, Reshape
Spine and others). A step named after an effect has the effect's menu
name without its ellipsis. For many effects, and for steps such as New
Layer, the catalogs hold that name only with the ellipsis. The panel
listed those steps in English.

Each complete catalog now has a row for every step name, written in the
catalog's own terms: 1,437 rows in the 19 catalogs. The History panel
reads a step's row, or else the row of the same name with an ellipsis,
without the ellipsis, and shows the name as recorded when the catalog
has neither. A new test reads the step names from the sources, as the
tl! and message tests read theirs, and requires a row for each in every
complete catalog.

Docs: docs/target-app-parity.md.
2026-10-17 17:22:15 +07:00
BFlat fdac986bb4 Merge pull request #2686 from storytold/fix/2441-group-select-compound-part
Part of #2441: Group Selection picks and moves one path of a compound path; i18n and docs for the sixth batch
2026-10-17 17:18:26 +07:00
BFlat fcdddadeb8 Merge pull request #2625 from dotCooCoo/fix/puppet-pins-keep-save-clean
Background save: dropped Puppet Warp pins, ended Edit Text and font scans leave the document saved
2026-10-17 17:17:51 +07:00
BFlat 97cd86d461 Merge pull request #2626 from dotCooCoo/feat/artboards-panel-shift-range
Artboards: Shift-click in the Artboards panel selects a range of artboards
2026-10-17 17:17:36 +07:00
BFlat 47b1fa52cb Merge pull request #2628 from dotCooCoo/feat/export-overflow-warning
Export: PDF, EPS, SVG, EMF, WMF and image exports warn about type that doesn't fit its frame
2026-10-17 17:17:22 +07:00
BFlat 21dc3bf565 Merge pull request #2629 from dotCooCoo/fix/exit-isolation-keeps-lock-guides
Guides: Lock Guides keeps guides deselected after Undo, Exit Isolation Mode and Paste
2026-10-17 17:17:08 +07:00
BFlat 6ecf568c5d Merge pull request #2630 from dotCooCoo/fix/issue-2345
Part of #2345: a marquee does not select a clip group by its hidden art
2026-10-17 17:16:50 +07:00
BFlat 7d677eaa13 Merge pull request #2631 from dotCooCoo/feat/lock-variables
Variables: Lock Variables stops variables from being defined, deleted or renamed
2026-10-17 17:16:35 +07:00
BFlat 20a40f5b1b Merge pull request #2632 from MarekSpodBiedry/issue-2260
Layers panel: drop a layer under the last row to move it to the bottom (#2260)
2026-10-17 17:16:18 +07:00
BFlat e3a67119c1 Merge pull request #2633 from dotCooCoo/fix/save-panels-offer-their-file-type
Save: save panels for files other than documents offer the file type they write
2026-10-17 17:16:01 +07:00
BFlat 003ec8f373 Merge pull request #2635 from dotCooCoo/fix/issue-2460
Part of #2460: a huge selection of type, images, symbols or meshes shows its bounds
2026-10-17 17:15:52 +07:00
BFlat 1fd7ab495a Merge pull request #2665 from dotCooCoo/fix/print-tiling-artboard-edge
Print: a Print Tiling origin on an artboard's right or bottom edge is measured from that artboard
2026-10-17 17:15:35 +07:00
BFlat e7e149a8bd Merge pull request #2637 from dotCooCoo/fix/art-on-artboard-edge
Artboards: art centered on an artboard's right or bottom edge is on that artboard
2026-10-17 17:15:19 +07:00
bflatastic 4417c4feb7 Docs: the ROADMAP's 2026-10-17 row includes the sixth batch 2026-10-17 17:13:04 +07:00
dotCooCoo b0e78cf3d8 Background save: dropped Puppet Warp pins, ended Edit Text and font scans leave the document saved
Selecting other art drops Puppet Warp pins, ending Edit Text clears the
flat view, and a font scan lays type out again. None of these makes an
undo step or counts as an edit to save, but each one replaced the
document. A background save that finished afterwards compared the
document with the one it wrote by pointer, so the document stayed
marked modified. Data Recovery also wrote a new copy of a document whose
pins had been dropped.

DocState now records the documents that these changes replaced, and
DocState::same_content counts them as having the same content. The
modified flag, the end of a background save and Data Recovery use it.
After Edit Text ends, an undo state that was the saved one stays the
saved one.
2026-10-17 17:13:03 +07:00
dotCooCoo 1401051603 Artboards: Shift-click in the Artboards panel selects a range of artboards
With the Artboard tool in use, a Shift-click on a row of the Artboards
panel selects the artboards from the last row clicked without Shift to
the clicked row, and the clicked row's artboard becomes the active one.
When the artboard of the last row clicked without Shift is no longer
selected, the range starts from the active artboard, and later
Shift-clicks start from there too. Ctrl/Cmd-click still adds or removes
one artboard, and a plain click selects one. The public Select
artboards page lists Shift-click in the Artboards panel for selecting
several artboards.

A Shift-click used to add or remove one artboard, as Ctrl/Cmd-click
does (#1139).

Docs: docs/target-app-parity.md.
2026-10-17 17:13:03 +07:00
dotCooCoo 14a3740e51 Export: PDF, EPS, SVG, EMF, WMF and image exports warn about type that doesn't fit its frame
Print and Print Preview name the area type and type on a path that
prints without the text past the end of its frame (#2308). The exports
that draw type gave no such warning: a PDF, EPS, SVG, EMF, WMF or
raster export of a frame too small for its text answered with no
warning about it.

These exports now add the same warning, with "isn't drawn in the
export" in place of "doesn't print". Each export counts the visible
objects that it draws. Those are the objects on the pages or artboards
it writes, or all of them in an EPS of the visible art and in an SVG
without chosen artboards. A PDF leaves out layers that don't print
unless includeNonPrinting or createLayers is set. The objects are found
with the walk that fonts::printed_type runs for Print, and typecmd.rs
builds the message with the code that builds Print's. A .ai file keeps
the whole text in its editing data and gives no warning.

Docs: docs/mcp.md (Fitting area type), docs/target-app-parity.md.
2026-10-17 17:13:03 +07:00
dotCooCoo 30c5bd3589 Guides: Lock Guides keeps guides deselected after Undo, Exit Isolation Mode and Paste
With View > Guides > Lock Guides on, Session::select drops the paths
made into guides from the selection (#1534), but commands that set the
selection another way skipped that filter and left a locked guide
selected, so the next move moved it. object.exitIsolation selected an
isolated guide path. Undo, Redo, a canceled undo group, a canceled
drag or dialog preview and a failed command.batch brought back locked
guide paths and ruler guides in the selection. Unlock All, Show All
and Paste selected the guide paths they unlocked, showed or pasted.
Locking the guides deselected them in the active document only.

The filter is now deselect_guides, which also clears the selected
ruler guides. Session::select and Session::edit run it while Lock
Guides is on, and so do object.exitIsolation, Undo, Redo,
Session::cancel_interaction, a canceled undo group and a failed batch.
Locking the guides deselects them in every open document. With Lock
Guides off, the selection is set as before.

Docs: docs/mcp.md.
2026-10-17 17:13:03 +07:00
dotCooCoo e09038041f Part of #2345: a marquee does not select a clip group by its hidden art
A marquee measured a clip group, and the objects on a layer with a
clipping mask, by all of their art, including the art the mask hides.
A marquee around a rectangle drawn next to a clip group also selected
the group when it crossed the group's hidden art. A click already
counts only the art inside the clipping path.

The marquee now takes a clip group, or an object on a clipping layer
or sublayer, only when it meets the area inside the clipping path, and
it measures the art there within that area's bounds. The same rule
applies to the objects that Direct and Group Selection select whole,
to Group Selection's E marquee, and in isolation mode when the clip
group or clipping layer itself, or one object directly inside it, is
isolated. The anchor points that Direct Selection's marquee picks are
unchanged.

Docs: docs/target-app-parity.md.
2026-10-17 17:13:03 +07:00
dotCooCoo 59f63e9161 Variables: Lock Variables stops variables from being defined, deleted or renamed
Nothing locked the variables: any command or panel button could delete
or rename a variable that scripts and data sets name.

variable.lock {locked?} (Lock Variables: a lock button in the Variables
panel's bottom bar and an item in its menu) sets a flag that is saved
with the document. Without `locked` it toggles, and a change is one
undo step. While the flag is set, variable.define, variable.delete,
variable.rename and the four variable.make…Dynamic commands are refused
with "variables are locked", and the panel disables New Variable…,
Variable Options…, Delete Variable and Make … Dynamic. Binding,
unbinding and the dataset commands still run. variable.list
reports `locked`. A file without the flag opens unlocked.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-17 17:13:03 +07:00
MarekSpodBiedry 336d860ed3 Layers panel: drop a layer under the last row to move it to the bottom (#2260) 2026-10-17 17:13:03 +07:00
dotCooCoo 7bc9fd7220 Save: save panels for files other than documents offer the file type they write
Document Info's Save, Save Swatch Library and Save Graphic Style
Library to a file, the Libraries panel's Export Library…, the presets
dialogs' Export…, the CSS Properties export, Print to a PostScript
file and Keyboard Shortcuts › Export… passed no file type to the save
panel. On Windows the panel listed "All Files", and neither the Windows
nor the macOS panel added the extension to a name typed without one.

Each of these saves now passes the one file type it writes, as Save and
Export do for document formats. The Windows panel then lists it, and
the Windows and macOS panels add its extension. The labels are the ones
the open dialogs use for these files (Swatch libraries, Libraries, the
presets, Shortcut sets), the Window menu's Graphic Style Libraries, Text
for Document Info, CSS and PostScript.
2026-10-17 17:13:03 +07:00
dotCooCoo cec7d23d96 Part of #2460: a huge selection of type, images, symbols or meshes shows its bounds
A selection with more than 100,000 anchors shows its bounds instead of
every outline and anchor (#525). The count took in path anchors only.
Type, images, symbol instances, placed documents, gradient meshes and
envelopes counted nothing, although the selection overlay outlines each
of them: a box, an area type frame or a type path, a baseline marker
for point type, and the points and mesh lines of meshes and envelopes.
The PDF importer makes type objects from a page's text lines, one image
object per image and one gradient mesh per patch or triangle of a mesh
shading, so selecting all of a large PDF outlined each of them: 131,072
selected mesh pieces need 16.8 million vertices, a 336 MB vertex
buffer, past wgpu's 256 MiB buffer limit.

The count now takes in what the overlay draws for each kind. Paths
count their anchors. Area type and type on a path count the anchors of
their frame or path, and point type counts six: its box's corners and
the ends of its baseline marker. Images, symbol instances, placed
documents, and area type or type on a path in perspective count the
four corners of their box, and gradient meshes and envelopes count
their points and the ends of their mesh lines. The selection's outline,
the key object's outline and the hover highlight all use the count.

Docs: docs/target-app-parity.md.
2026-10-17 17:13:03 +07:00
bflatastic c18069e6ed Print Tiling: the origin's artboard is found with the document's own edge rule (#2637) 2026-10-17 17:13:03 +07:00
bflatastic fb8578ddf0 i18n: rows for the strings this batch adds (Danish, Dutch, Indonesian labels; gradient-mesh image messages in every complete language) 2026-10-17 17:13:03 +07:00
bflatastic 546b8846b6 Part of #2441: Group Selection picks and moves one path of a compound path
A click with the Group Selection tool on a compound path selects the path
under the pointer (its outline within the pick tolerance, else the innermost
path whose area holds the click), so the outer shape and each hole can be
selected on their own; Shift-click adds another, and a click on a selected
path adds the compound path, as a click on a group member climbs to its group.

A path selected this way is an object of its own for Move, Transform, Rotate
and the other transforms, as it already was inside an isolated compound path:
the hole of a ring moves without the ring. Paint and the other commands still
go to the compound path, which holds the paint.

Docs: docs/target-app-parity.md, docs/ui-parity.md.

# Conflicts:
#	docs/target-app-parity.md
2026-10-17 17:13:03 +07:00
dotCooCoo 24b6486ebd Artboards: the doc comment names the shared corner the first artboard holds
On an edge two artboards share, the artboard to the right of it or below
it holds a point, except at the end of the edge that lies on that
artboard's bottom or right edge, such as where both artboards' bottom
edges meet. There the first artboard holds it, or the last when
topmost. The doc comment and the test comments now say so, and the test
asserts that corner.
2026-10-17 17:13:02 +07:00
dotCooCoo d22ccebc9c Print: a Print Tiling origin on an artboard's right or bottom edge is measured from that artboard
The Print Tiling tool's press and print.tiling.set without `artboard`
decided which artboard a point is on with Rect::contains, which leaves
out the right and bottom edges. A press exactly on an artboard's right
or bottom edge picked no artboard when no other artboard holds that
point, so the drag did not snap to that artboard's edges. An origin
there was measured from the first printed artboard: with artboards at
0 to 300 pt and 300 to 600 pt, an origin on the second one's right edge
was saved as x 600 instead of 300.

Both now count the edges as Document::art_on_artboard does, within a
millionth of a point.
2026-10-17 17:13:02 +07:00
BFlat fa4e42762b Merge pull request #2614 from dotCooCoo/fix/artboard-art-symbol-bounds
Artboards: Rearrange and Select All on Active Artboard measure a symbol instance by its art
2026-10-17 17:12:16 +07:00
BFlat 2045fe3de1 Merge pull request #2638 from dotCooCoo/fix/spine-whole-number-index
Blends, meshes and envelopes: an index or count that is not a whole number is refused
2026-10-17 17:12:05 +07:00
BFlat eb672e8f42 Merge pull request #2641 from dotCooCoo/fix/data-sets-rewrite-hidden-type
Variables: a data set rewrites bound type on hidden layers
2026-10-17 17:11:53 +07:00
BFlat 82e2c9506b Merge pull request #2644 from dotCooCoo/feat/trackpad-rotate-view
Rotate View: a two-finger rotation on a Mac trackpad turns the view about the pointer
2026-10-17 17:11:41 +07:00
BFlat fff1acac06 Merge pull request #2645 from dotCooCoo/fix/huge-selection-type-path-brackets
Type: a huge selection of type on a path draws no per-object brackets
2026-10-17 17:11:25 +07:00
BFlat 8186f9e2e4 Merge pull request #2647 from dotCooCoo/fix/too-large-note-counts-rgba
Images: the too-large note counts the image's pixels as RGBA
2026-10-17 17:11:14 +07:00
BFlat 5f0d809047 Merge pull request #2648 from dotCooCoo/fix/rasterize-warns-undecodable-image
Rasterize, Flatten Transparency: commands that replace art with a rendering warn about an undecodable image
2026-10-17 17:10:58 +07:00
BFlat f19a71367d Merge pull request #2650 from dotCooCoo/fix/issue-2422
Part of #2422: a selected clip group shows its clipping path's outline, not its hidden art
2026-10-17 17:10:48 +07:00
BFlat 49686460aa Merge pull request #2656 from dotCooCoo/fix/saved-bleed-and-spacing-in-range
New Document and Document Setup: values out of range in a saved preset or a file are read in range
2026-10-17 17:10:33 +07:00
BFlat 8ecb22851d Merge pull request #2657 from Silvertree2010/fix/h2438-css-svg-export-writes-an-invalid
Escape quotes and backslashes in exported CSS font-family
2026-10-17 17:10:20 +07:00
BFlat 2aa7412e3a Merge pull request #2659 from dotCooCoo/fix/object-mosaic-whole-counts
Object Mosaic: columns and rows that are not whole numbers are refused
2026-10-17 17:10:01 +07:00
BFlat 18d01ae6ff Merge pull request #2664 from dotCooCoo/fix/issue-2276
Fix #2276: the Eyedropper and RGB input give color-managed CMYK values in a process document
2026-10-17 17:09:45 +07:00
BFlat 3c5034b3dd Merge pull request #2667 from dotCooCoo/fix/ai-import-stale-outline-note
.ai import: type from the layers opens without the PDF part's outlines warnings
2026-10-17 17:09:30 +07:00
BFlat 1168b2373f Merge pull request #2538 from vangel76/fix/1676-mesh-from-image
Gradient mesh: Create Gradient Mesh on an embedded image (#1676)
2026-10-17 17:09:15 +07:00
BFlat 03e867df02 Merge pull request #2512 from vangel76/feat/2342-symbol-nine-slice
Symbols: Symbol Options › Enable Guides for 9-Slice Scaling (#2342)
2026-10-17 17:08:56 +07:00
BFlat 0c0267acbf Merge pull request #2416 from VL420/feat/global-rulers
G7: View › Rulers › Change to Global / Artboard Rulers
2026-10-17 17:08:45 +07:00
BFlat 3e9c590ee4 Merge pull request #2582 from dotCooCoo/fix/appearance-inline-choice-params
Appearance: the inline effect editor shows choice parameters as dropdowns with the dialog's labels
2026-10-17 17:08:32 +07:00
BFlat 06f0700155 Merge pull request #2594 from dotCooCoo/fix/rotated-view-cursors
Rotate View: resize and rotate cursors turn with the view
2026-10-17 17:08:15 +07:00
BFlat 3981e0bd03 Merge pull request #2453 from VL420/feat/artistic-filters-1
G2: Effect › Artistic › Cutout, Neon Glow and Poster Edges
2026-10-17 17:08:03 +07:00