Commit Graph
7412 Commits
Author SHA1 Message Date
bflatastic 83daab708d .ai import: graphic styles scale with a document drawn on its page 2026-11-02 14:32:54 +07:00
dotCooCoo 405372555d .ai import: the document's graphic styles open in the panel with their objects linked
Squashed from #5155 onto main.
2026-11-02 14:32:53 +07:00
dotCooCoo 0e38796573 .ai import: placed files are found by the folder they keep relative to the document
Squashed from #5176 onto main.
2026-11-02 14:32:53 +07:00
dotCooCoo 56f6128f94 .ai import: a line width of 0 draws as a hairline
Squashed from #5174 onto main.
2026-11-02 14:32:53 +07:00
bflatastic dc363ec356 Tests: Convert to Shape beside Offset Path is a style any object takes 2026-11-02 14:32:53 +07:00
dotCooCoo dbb04905e0 .ai import: Offset Path, Outline Object and Outline Stroke open live
Squashed from #5148 onto main.
2026-11-02 14:32:52 +07:00
dotCooCoo e8cd6c173a Variables: Save Variable Library… writes the variables and data sets as an XML library
Squashed from #5147 onto main.
2026-11-02 14:32:52 +07:00
dotCooCoo 9031906abd Actions: deleting sets moves the selected action with its set
`ui.actionSet.delete` now moves the panel's selected action down with its
set, and clears it when its set is deleted. Before, the stored set and
action indexes stayed as they were, so a set made later at the deleted
set's index, and an action recorded into it, showed as selected, and
Action Options… renamed that action.
2026-11-02 14:32:51 +07:00
dotCooCoo b2c62c398e Actions: the panel menu reads the selected action only in the current set
The panel menu read the stored (set, action) pair without checking that
its set is still the current one, as the panel and Delete Selection do.
After `ui.actionSet.delete` removed a set above it, the pair pointed at
another set's action, and Action Options…, Batch… and Play Current
Selection acted on that action. They are now off until an action of the
current set is selected.
2026-11-02 14:32:51 +07:00
dotCooCoo 0212c2b00e Actions: Action Options and Set Options refuse a field that is not an index
The dialog's fields choose what OK does, as they choose its heading. A
`set` or `action` field that `ui.dialog.set` changed to null or to an
index past the last set or action is now an error: OK renames no set or
action, adds no set, and the dialog stays open. Before, an Action Options
dialog whose `action` was null renamed the set instead.
2026-11-02 14:32:51 +07:00
dotCooCoo 642df312b3 Actions: the panel menu's Action Options… renames the selected action
Action Options… opens the New Set and Set Options dialog, headed Action
Options, with the selected action's name; OK renames the action and keeps
its steps. The new command ui.action.rename {set, action, name} does the
rename and refuses an index past the last set or action or an empty name.

Part of #1629.
2026-11-02 14:32:50 +07:00
dotCooCoo 90179904d8 Actions: the saved current set follows its set when windows merge
When two windows save the preferences, the current set's index and the
list of sets can come from different windows. The index now points at
the same set in the merged list, found by its contents or its name, and
no set is current when the merge cannot tell which set it was. Recording
into, renaming or deleting the current set, or deleting a set before it,
does not override a set the other window made current.
2026-11-02 14:32:50 +07:00
dotCooCoo f5da917b37 Actions: the current set is kept after a restart
The Actions panel did not save which set was current, so after a restart
Begin Recording put the new action into the first set (Default Actions)
instead of the set the user had picked. The current set is now saved
with the UI preferences as an index into the saved sets; a value that is
not an index, or is past the last set, leaves no set current.

With no set current, Begin Recording records into the first set as
before, and now makes that set current so the panel shows where the
recording goes.
2026-11-02 14:32:50 +07:00
dotCooCoo 0be7609bf7 Tabs: Above Text checks the place below text against the window's top
The place below the text was taken even when the text was panned above
the canvas, which put the panel above the main window. It is now taken
only when it is at or below the window's top. A docked Tabs panel is
measured at the 360-point height it floats at, not 240, so it is placed
below the text only when it fits there.
2026-11-02 14:32:49 +07:00
dotCooCoo 442430ff12 Tabs: Above Text puts the panel below text near the window's top
With no room above the text, the panel went to the top of the main
window's content and could cover the text. It now goes just below the
text when it fits there in the canvas, and at the window's top only when
it does not.
2026-11-02 14:32:49 +07:00
dotCooCoo 48e2bc6508 Tabs: Above Text keeps the panel's bar inside the window
With text near the top of the window, Position Panel Above Text put the
panel, and its OS window, above the main window's content and could put
the bar above every screen. The panel now goes no higher than the top of
the main window's content.
2026-11-02 14:32:49 +07:00
dotCooCoo d8394d5d87 Fix #4995: Above Text moves a Tabs panel that already floats
Position Panel Above Text moved a floating Tabs panel only in the layout's
in-window rect. On desktop builds a floating panel is an OS window, which
moves only when its desktop rect changes, so the panel stayed where it
was and the layout followed it back on the next frame. A docked panel
floated above the text as expected.

place_floating now also sets the window's desktop rect, from the main
window's content origin, when the panel's window already has one.
2026-11-02 14:32:49 +07:00
dotCooCoo 6be88a24b4 Fix #785: commands refuse an id that isn't an object id instead of using the selection
Commands whose `id` or `ids` the shared check in Session::execute does not
read still parsed them with id_param/ids_param, which drop anything that is
not a non-negative integer, and then acted on the selection or the current
layer. `object.blend.make {"ids": 3}` blended the selection,
`object.envelope.makeWithWarp {"ids": [2, "x"]}` warped the selection,
`graph.setData {"id": "2"}` changed the selected graph and
`layer.newSublayer {"parent": "2"}` added a sublayer to the current layer.

- cmd::named_ids and cmd::named_id read `ids`/`id` as targets does: a value
  that is not an object id, or an unresolved step reference, is an error.
- The symbol and brush, Live Paint, Shape Builder and Image Trace, blend,
  envelope and mesh, perspective, Liquify, Puppet Warp and graph helpers use
  them in place of the lenient readers.
- layer.clippingMask.toggle checks `id`, and layer.newSublayer checks
  `parent`, with checked_id before falling back to the highlighted row or the
  current layer.
2026-11-02 14:32:49 +07:00
Brandon Thomas cfb30d8139 Merge pull request #5214 from dotCooCoo/feat/recolor-global-adjust
Recolor: the Global Adjust sliders change every color at once
2026-11-02 00:34:59 -05:00
Brandon Thomas 6daefef735 Merge pull request #5212 from dotCooCoo/feat/document-info-save-category
Document Info: Save writes the category the panel shows
2026-11-02 00:34:54 -05:00
Brandon Thomas c4a394c536 Merge pull request #5203 from dotCooCoo/fix/empty-text-clip-kept
Artwork Cleanup: Empty Text and Off-Artboard Art leave type that clips art
2026-11-02 00:34:49 -05:00
Brandon Thomas 9269cb7cf3 Merge pull request #5197 from dotCooCoo/fix/cleanup-leaves-hidden-locked-art
Artwork Cleanup: Simplify Anchors and Deep Ungroup leave hidden and locked art alone
2026-11-02 00:34:43 -05:00
Brandon Thomas a51391a7c3 Merge pull request #5195 from dotCooCoo/fix/release-moves
Canvas: a drag ends where its button went up
2026-11-02 00:34:37 -05:00
Brandon Thomas cb700213c6 Merge pull request #5191 from dotCooCoo/fix/issue-2181
Fix #2181: PDF layer forms get real boxes and lose their off-page marks
2026-11-02 00:34:31 -05:00
Brandon Thomas 3d59d874ac Merge pull request #5190 from dotCooCoo/fix/separations-gamut-count-plural
Separations Preview: Gamut Check counts colors in the singular and the plural
2026-11-02 00:34:26 -05:00
BFlat 278dfa0b64 Merge pull request #5117 from dotCooCoo/fix/ai-os22-g5
.ai import: multi-layer masks open as a clipping group in each layer
2026-11-02 12:32:45 +07:00
BFlat 71d4f43dea Merge pull request #5115 from dotCooCoo/fix/ai-os22-g4
.ai import: graphs open as their drawn art, with a note
2026-11-02 12:32:31 +07:00
BFlat 3754e305a3 Merge pull request #5102 from dotCooCoo/fix/ai-os20-settings
.ai import: artboard display options, raster effects settings and the header's author come in
2026-11-02 12:32:12 +07:00
BFlat f94baa5b82 Merge pull request #5122 from dotCooCoo/fix/ai-os22-g14
.ai import: anchors are smooth or corners by the case of their segment operators
2026-11-02 12:31:56 +07:00
BFlat 6e23642861 Merge pull request #5121 from dotCooCoo/fix/vars-p7
Variables: Edit Data Set's Name field renames the data set
2026-11-02 12:31:39 +07:00
BFlat 517f3e0f3e Merge pull request #5116 from dotCooCoo/fix/vars-p9
Variables: Import Data Sets reads CSV files that are not UTF-8 as Windows-1252
2026-11-02 12:31:29 +07:00
BFlat 16a8ba8a2f Merge pull request #5106 from dotCooCoo/fix/symbol-edit-mode-followups
Symbols: symbol editing mode keeps every instance in step, and its UI entry points are tested
2026-11-02 12:31:19 +07:00
BFlat 09a143bf0b Merge pull request #5094 from dotCooCoo/feat/char-style-options-advanced
Character Styles: Style Options sets scale, baseline shift, rotation and language
2026-11-02 12:31:02 +07:00
BFlat 42473c9aeb Merge pull request #5098 from dotCooCoo/feat/opentype-panel-position
OpenType: the panel's Position menu sets superscript, subscript, numerator or denominator glyphs
2026-11-02 12:30:46 +07:00
BFlat b1ff0dc237 Merge pull request #5101 from dotCooCoo/fix/kerning-optical-clears-manual
Type: choosing Optical kerning clears manual pair values, as Auto does
2026-11-02 12:30:29 +07:00
BFlat 15d88941f1 Merge pull request #5105 from dotCooCoo/fix/jp2-display-resolution-first
File formats: JPEG 2000 prefers the display resolution box over the capture box in either order
2026-11-02 12:30:18 +07:00
BFlat 780926bfac Merge pull request #5104 from dotCooCoo/fix/opacity-mask-editable-ids
Transparency: makeOpacityMask refuses objects in ids that cannot be edited
2026-11-02 12:30:05 +07:00
BFlat 28116b90e4 Merge pull request #5097 from dotCooCoo/fix/pattern-brush-original-restores
Brushes: Pattern Brush Options keeps Original after a swatch is chosen
2026-11-02 12:29:48 +07:00
BFlat 87f192a475 Merge pull request #5095 from dotCooCoo/fix/mesh-create-outside
Mesh: Create Gradient Mesh at a point outside the object keeps the path
2026-11-02 12:29:35 +07:00
BFlat e7feddedbc Merge pull request #5087 from dotCooCoo/fix/effect-move-reply
Appearance: effect.move reports the effect's index in the object whose row it names
2026-11-02 12:29:23 +07:00
BFlat 4491eb1c72 Merge pull request #5091 from dotCooCoo/fix/simplify-backdrop-tab
Accessibility: Tab no longer stops on the Simplify and Smooth sliders' backdrop
2026-11-02 12:29:09 +07:00
BFlat 2c00ed0780 Merge pull request #5093 from dotCooCoo/fix/screens-dotless-i
Export for Screens: a folder named with dotless ı is not merged into i
2026-11-02 12:28:54 +07:00
BFlat c9d8b15a4d Merge pull request #5086 from dotCooCoo/fix/ai-os17-vertical
.ai import: vertical type keeps its orientation and Tate-chu-yoko runs
2026-11-02 12:28:37 +07:00
BFlat 59d792186e Merge pull request #5081 from dotCooCoo/feat/objects-on-path-rotate-all
Objects on Path: the Rotate All widget turns every attached object about its attachment point
2026-11-02 12:28:24 +07:00
BFlat ff0de216a7 Merge pull request #5069 from dotCooCoo/fix/ai-os17-area
.ai import: area type keeps its rows, columns, gutters and first baseline
2026-11-02 12:28:07 +07:00
BFlat d2cd4ba218 Merge pull request #5082 from dotCooCoo/fix/ai-os17-wrap
.ai import: area type flows around its text wrap objects
2026-11-02 12:27:55 +07:00
BFlat a2677d9b78 Merge pull request #5051 from dotCooCoo/fix/ai-os6
.ai import: a file whose PDF part can't be read opens from its editing data
2026-11-02 12:27:37 +07:00
BFlat 67b445d4f0 Merge pull request #5084 from dotCooCoo/fix/status-messages-plural-counts-2
i18n: open, save and recovery messages name their counts in the singular or the plural
2026-11-02 12:27:26 +07:00
BFlat b724438757 Merge pull request #5049 from dotCooCoo/feat/pattern-library-geometric
Swatch libraries: Patterns › Geometric Patterns adds a pattern with its swatch
2026-11-02 12:27:08 +07:00
BFlat b322e2d1a5 Merge pull request #5068 from dotCooCoo/feat/actions-duplicate
Actions: the panel menu's Duplicate copies the selected action or set
2026-11-02 12:26:57 +07:00