Commit Graph
6554 Commits
Author SHA1 Message Date
BFlat daffac2c2d Merge pull request #4401 from dotCooCoo/feat/layers-alt-click-selects-layer
Layers: Alt-click on a layer name selects the layer's art
2026-10-29 10:57:39 +07:00
BFlat 59ba74067b Merge pull request #4400 from dotCooCoo/feat/gradient-reset-click
Gradient: Cmd/Ctrl-click on the Gradient Fill box or the Gradient button resets to White, Black
2026-10-29 10:57:18 +07:00
BFlat a04c068ae0 Merge pull request #4399 from dotCooCoo/feat/color-bar-complement-inverse-clicks
Color panel: Cmd/Ctrl-click and Cmd/Ctrl+Shift-click on the spectrum apply Complement and Invert
2026-10-29 10:56:40 +07:00
BFlat 372809c891 Merge pull request #4398 from dotCooCoo/fix/issue-4326
Part of #4326: a drag whose mouse-up was lost ends once macOS reports no button down
2026-10-29 10:56:17 +07:00
BFlat f96144c784 Merge pull request #4388 from dotCooCoo/feat/scissors-alt-add-anchor
Scissors: Alt held switches to the Add Anchor Point tool
2026-10-29 10:55:56 +07:00
BFlat fddec26707 Merge pull request #4387 from dotCooCoo/feat/type-tool-modifier-switch
Type tools: Shift switches between horizontal and vertical, and Alt switches between area and path type
2026-10-29 10:55:35 +07:00
BFlat a101ebe44d Merge pull request #4386 from dotCooCoo/feat/units-cycle-shortcut
Document: Cmd+Alt+Shift+U switches to the next unit of measurement
2026-10-29 10:55:09 +07:00
BFlat 301caf5851 Merge pull request #4385 from dotCooCoo/feat/width-tool-escape-deselects
Width tool: Escape deselects the selected width points
2026-10-29 10:54:45 +07:00
BFlat ef815a00d3 Merge pull request #4384 from dotCooCoo/feat/arc-tool-drag-keys
Arc tool: C, F and Up/Down change the arc while it is dragged out
2026-10-29 10:54:11 +07:00
BFlat c4dda01263 Merge pull request #4380 from dotCooCoo/feat/blob-brush-alt-smooth
Blob Brush: Alt switches to the Smooth tool while it is held
2026-10-29 10:53:57 +07:00
BFlat 63aa7fc38c Merge pull request #4376 from dotCooCoo/fix/pencil-alt-smooth-radius
Pencil: Alt smooths as far from the drag as the Smooth tool does
2026-10-29 10:53:40 +07:00
BFlat 575b3027f6 Merge pull request #4375 from dotCooCoo/fix/shape-builder-merge-fewer-passes
Shape Builder: a merge walks the arrangement once per batch of faces
2026-10-29 10:53:21 +07:00
BFlat 1da191ae76 Merge pull request #4367 from Silvertree2010/fix/4262-resize-bug-locked-ratio-scaling
Fix Shift-scaling a corner handle along a single axis
2026-10-29 10:53:00 +07:00
BFlat 1fb627749a Merge pull request #4363 from dotCooCoo/fix/stroke-weight-steps-off-list
Stroke Weight: a step from a weight between the presets goes to the next preset
2026-10-29 10:52:37 +07:00
BFlat 489790826d Merge pull request #4361 from dotCooCoo/fix/curvature-delete-reshapes
Curvature: deleting a point re-curves the path through the remaining points
2026-10-29 10:52:18 +07:00
BFlat 12f29b40f1 Merge pull request #4335 from ham9zah/test/properties-reference-point
Properties: test that typed transforms turn about the reference point (#4285)
2026-10-29 10:51:49 +07:00
BFlat 5464dc644c Merge pull request #4331 from Silvertree2010/fix/4206-bug-gradient-mesh-node-level-tra
Apply Transparency opacity to the clicked gradient mesh point
2026-10-29 10:51:23 +07:00
BFlat 340b8644b7 Merge pull request #4433 from el-j/fix/dxf-circular-sliver-4151
Fix #4151: DXF export: verify closed circular subpaths complete a full turn without reversing
2026-10-29 10:50:36 +07:00
BFlat fe45b77d69 Merge pull request #4425 from dotCooCoo/fix/cursor-idle-test-timing
Tests: the idle cursor test renders every frame on the test thread
2026-10-29 10:49:15 +07:00
BFlat 9309b2f6ed Merge pull request #4408 from dotCooCoo/fix/appearance-add-keys-empty-ids
Appearance: Add New Fill and Add New Stroke with an empty ids list run nothing without a selection
2026-10-29 10:48:07 +07:00
BFlat b095504986 Merge pull request #4316 from ham9zah/fix/appearance-mixed-fill-chip
Appearance: a mixed selection's object chip shows "?" when the fills differ
2026-10-29 10:47:43 +07:00
BFlat c40e641421 Merge pull request #4325 from Hassan1305/fix-4237-add-anchor-select
Fix #4237: Add Anchor Point selects the path it adds to
2026-10-29 10:47:20 +07:00
BFlat 9824a6459e Merge pull request #4328 from Silvertree2010/fix/4306-expand-does-not-work-as-intended
Expand the stroke of stroked type into filled outlines
2026-10-29 10:46:45 +07:00
BFlat 8e93bcb1bf Merge pull request #4362 from dotCooCoo/fix/issue-3773
Fix #3773: Offset Path offsets a path whose ends meet as a closed shape
2026-10-29 10:46:22 +07:00
BFlat 9392c872f5 Merge pull request #4501 from Silvertree2010/fix/4495-bug-eraser-tool-breaks-compound
Keep compound path holes when using the Eraser and Knife
2026-10-29 10:45:59 +07:00
BFlat cd64f6d14a Merge pull request #4512 from el-j/perf/canvas-upload-buffer-4504
perf(ui-egui): eliminate zero-filling allocation on canvas texture upload in color_image (#4504)
2026-10-29 10:43:58 +07:00
BFlat 4251afb7fa Merge pull request #4483 from dotCooCoo/fix/saturate-requires-intensity
Edit Colors: Saturate without an intensity is an error instead of a pass at 0
2026-10-29 10:43:31 +07:00
BFlat 1f452229cc Merge pull request #4429 from dotCooCoo/fix/layer-commands-refuse-text-booleans
Layers: the Layers panel's commands refuse a boolean given as text
2026-10-29 10:43:08 +07:00
BFlat e547aac113 Merge pull request #4448 from dotCooCoo/fix/artboard-commands-refuse-bad-numbers-and-names
Artboards: artboard.new and artboard.setProps refuse a number or name of the wrong type
2026-10-29 10:42:46 +07:00
BFlat ccf274b0c3 Merge pull request #4315 from Silvertree2010/fix/h3006-shape-rectangulargrid-and-shape
Accept whole-number floats as grid divider counts
2026-10-29 10:42:10 +07:00
BFlat 899b76ec74 Merge pull request #4436 from el-j/fix/svg-nested-images-node-cap-3564
Fix #3564: SVG import: cap converted objects and nested images
2026-10-29 10:41:46 +07:00
BFlat eb0a59a75f Merge pull request #4513 from mockydevs/fix/3579-nested-blend-memory
Blend: nested blends keep to a step budget (#3579)
2026-10-29 10:41:18 +07:00
dotCooCoo fea65ffb3d i18n: each catalog names leading with one term
In Turkish, Brazilian Portuguese, Indonesian, Bulgarian and Vietnamese
the Character panel's Leading field and the rows that name leading used
different words: Auto Leading in the Justification dialog, the Type
preferences' Size/Leading increment, and the Paragraph panel menu's
Top-to-Top and Bottom-to-Bottom Leading.
Turkish had four words, and its Leading field read "Lider", a leader.

Turkish now uses "Satır Aralığı", its Auto Leading word, in every
leading row, the Leading field included. In pt-br, id, bg and vi the
other rows now use the Leading field's word ("Entrelinhamento",
"Leading", "Междуредие", "Giãn dòng"). A new test checks that every
word of the Leading field appears in the four other rows of each
catalog.
2026-10-29 10:13:23 +07:00
el-j 813e30be69 i18n: fold Polish ł and additional Latin diacritics in name_sort_key 2026-10-29 10:13:23 +07:00
dotCooCoo cf9087bb87 Keyboard Shortcuts: Go to Conflict is not offered for a row that leaves the list
When a recorded chord takes the shortcut from a command that needs a value, that command
leaves the list. The dialog now clears its Go to Conflict target as well as its recording
and selection.
2026-10-29 10:13:23 +07:00
el-j ad3dac0031 Fix #4143: Window menu lists panel items alphabetically by localized name 2026-10-29 10:13:23 +07:00
dotCooCoo d5f77e18a8 Keyboard Shortcuts: a row that leaves the list stops recording
When Clear, Use Default, Reset to Defaults or another set takes the
shortcut from a command that needs a value, its row leaves the list. A
recording started on that row now stops and the row is no longer
selected, so the next key press does not give the hidden command a
shortcut or take one from another command.
2026-10-29 10:13:23 +07:00
dotCooCoo cd4511c548 Keyboard Shortcuts: an empty saved shortcut does not list a command that needs a value
A command that needs a value stayed listed when a saved or imported set held an empty shortcut
for it, showing no key. It is now listed only while its saved shortcut is not empty.
2026-10-29 10:13:23 +07:00
dotCooCoo 7b36442f41 Keyboard Shortcuts: Distribute Spacing stays listed, its axis is optional
object.distributeSpacing already spaces horizontally without an axis; its params doc now says so, so the editor keeps listing it.
2026-10-29 10:13:23 +07:00
dotCooCoo fc98c0c7cb Docs: Keyboard Shortcuts keeps commands a menu item or a dialog can run without a value 2026-10-29 10:13:23 +07:00
dotCooCoo 610e4523e9 Keyboard Shortcuts: commands that need a value are not listed unless given a shortcut
Edit › Keyboard Shortcuts listed every engine command with a menu path,
whatever its params. A shortcut runs a command with no params, so a key
given to File › Document Setup › Units ran document.setUnits with {}
and failed with "unknown units".

The dialog and shortcuts.list now leave out a command with a menu path
and no default shortcut when no item of the menu bar runs it without
params, it opens no dialog when run without them, and its params doc
names a required field. This leaves out 38 commands, among them the
Graphic Styles, Swatches and character and paragraph style commands
that take a name. A command whose shortcut the user has changed is
still listed, where the key can be changed or cleared, and a saved key
still runs and conflicts as before. Every command with a default
shortcut stays listed.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-29 10:13:23 +07:00
bflatastic c591331d65 Object: import the isolation predicates in menucmds.rs and object/commands.rs (#4299 made the imports explicit) 2026-10-29 10:13:22 +07:00
dotCooCoo 38bb903495 Distort tools: Escape cancels a Puppet Warp, perspective or Liquify drag
Escape did not cancel a drag with the Puppet Warp, Perspective Grid,
Perspective Selection and Liquify tools: the drag went on until the
mouse was released. Escape cancels a drag with the Direct Selection,
Gradient and Artboard tools.

Escape now cancels a Puppet Warp pin drag or turn, a Perspective Grid
handle or plane widget drag, a Perspective Selection move, resize or
plane widget drag, and a Liquify stroke. The art and the grid go back
to how they were when the drag began, the undo history does not
change, and the rest of the drag and the release send nothing. Puppet
Warp selects again the pins that were selected before the press.
During a Liquify Alt-drag that sizes the brush, Escape puts the brush
size back; the tool claims Escape only then. Escape during a
Perspective Selection press that has not moved past the drag threshold
ends the press, so moving on does not start a move. Otherwise, outside
a drag, Escape does what it did before.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-29 10:12:16 +07:00
dotCooCoo 5ed2fec4fd Text styles: the panel menu's Duplicate highlights the copy and Delete clears the highlight
Squashed from #4419 onto main.
2026-10-29 10:12:16 +07:00
dotCooCoo 02c9a3959d Arc tool: the quarter-ellipse sector holds at Slope 100
A closed arc at a lower slope encloses less than the quarter ellipse. The
doc comment on arc and the Draw arcs entry now name Slope 100.
2026-10-29 10:12:16 +07:00
dotCooCoo e28c08a8b8 Tabs: the position field's label is translated
The Tabs panel drew its X: and Y: label untranslated, so French showed
"X:" in place of its catalog's "X :" with a no-break space, and Chinese
showed an ASCII colon. The label now goes through the catalogs, and the
Polish and Vietnamese catalogs get their X: and Y: rows.
2026-10-29 10:12:16 +07:00
dotCooCoo f715b9a1a5 Object: Lock, Hide, Unlock All and Show All are off in an object isolated inside pattern or opacity mask editing
Pattern editing mode and opacity mask editing allow these commands only
while their own layer is the isolated one.
2026-10-29 10:12:16 +07:00
dotCooCoo 758a50adfe Arc tool: a closed arc with Base Along Y draws the X-axis sector mirrored
A closed arc from Arc Segment Tool Options, an Arc tool drag or
shape.arc with lengthX and lengthY closed through the box's bottom-left
corner with Base Along X, which makes a convex arc a quarter-ellipse
sector. With Base Along Y it closed through the corner a convex arc
bulges toward, so it drew the thin sliver between the arc and that
corner instead.

Such a closed arc now closes through the corner across from the one a
convex arc bulges toward with either base, so the Y-axis arc, open or
closed, convex or concave, is the X-axis arc mirrored top to bottom.
Open arcs and arcs with Base Along X are unchanged. The two-point
shape.arc form, whose params list no baseAlong, now closes through
(x1, y2) whatever baseAlong says.

Docs: docs/target-app-parity.md.
2026-10-29 10:12:16 +07:00
dotCooCoo a6a850868c Object: Lock, Hide, Unlock All and Show All are off in isolation mode
The reference app disables its Lock, Hide and Show All menus in
isolation mode. In VectorCraft every item of Object › Lock and
Object › Hide, Unlock All and Show All worked there.

In isolation mode, object.lock, object.lock.above,
object.lock.otherLayers, object.hide, object.hide.above,
object.hide.otherLayers, object.unlockAll and object.showAll are now
off. Their menu items are greyed out, and a call returns an error
that ends "exit isolation mode first". The Contextual Task Bar's
Lock button is greyed out too, and the Properties panel's Quick
Actions leave out Lock. Pattern editing mode and opacity mask editing do not count as
isolation mode for these commands. The check is outside_isolation in
cmd.rs, with has_selection_outside_isolation beside it.

Docs: docs/mcp.md, docs/target-app-parity.md.
2026-10-29 10:12:16 +07:00
bflatastic 0dfae85814 Blob Brush: import Cap and Join in freehand.rs (#4299 made the imports explicit) 2026-10-29 10:12:15 +07:00