Commit Graph
6881 Commits
Author SHA1 Message Date
BFlat f9560c5891 Merge pull request #4868 from Taha-Mahmoodi/fix/3604-ntfs-alternate-data-streams
Fix #3604: automation file access refuses an NTFS alternate data stream name on Windows
2026-10-31 20:15:07 +07:00
BFlat 9f9098283f Merge pull request #4802 from marshiyar/fix/3602-device-name
Swatch libraries: a library titled with a Windows device name is saved under another name (#3602)
2026-10-31 20:14:52 +07:00
BFlat a609ab659f Merge pull request #4871 from Taha-Mahmoodi/fix/995-width-stroke-zoomed-out
Fix #995: a width-profile stroke keeps its shape when the view zooms out
2026-10-31 20:14:36 +07:00
BFlat b5b35cc83f Merge pull request #4875 from Taha-Mahmoodi/fix/2651-repeat-options-preview
Fix #2651: Grid Repeat Options has a Preview checkbox
2026-10-31 20:14:21 +07:00
BFlat 7b8a849982 Merge pull request #4811 from mockydevs/fix/svg-mesh-flat-pieces
SVG export: a gradient mesh patch is cut no finer than its colour changes
2026-10-31 20:14:07 +07:00
BFlat b99f46ca75 Merge pull request #4876 from Taha-Mahmoodi/fix/3592-mesh-quad-budget
Fix #3592: a gradient mesh from a file is budgeted at about a million quads
2026-10-31 20:13:56 +07:00
BFlat ca8f7f6970 Merge pull request #4851 from dotCooCoo/fix/shortcut-layout-quote-key
Keyboard Shortcuts: a shortcut on the Turkish Q quotation-mark key shows " and runs
2026-10-31 20:13:39 +07:00
BFlat e3854a6023 Merge pull request #4782 from dotCooCoo/fix/paint-keys-shift-only
Shortcuts: Shift+Comma and Shift+Period follow key positions only with Shift alone
2026-10-31 20:13:23 +07:00
BFlat 58de20a4b1 Merge pull request #4846 from dotCooCoo/fix/homography-apply-finite
Geometry: a perspective point that overflows maps to nothing instead of infinity
2026-10-31 20:13:06 +07:00
BFlat 969f7f66c3 Merge pull request #4804 from dotCooCoo/feat/perspective-shift-constrains-move
Perspective Selection: Shift constrains a move to the plane's axes and diagonals
2026-10-31 20:12:52 +07:00
BFlat 9269e83b27 Merge pull request #4858 from dotCooCoo/fix/reduce-basic-keeps-selected-fill
Appearance: Reduce to Basic Appearance keeps the selected fill or stroke row
2026-10-31 20:12:37 +07:00
BFlat 62f2f327d4 Merge pull request #4863 from dotCooCoo/fix/add-new-fill-above-selected
Appearance: Add New Fill copies the selected fill row right above it
2026-10-31 20:12:22 +07:00
BFlat 73627d806b Merge pull request #4866 from dotCooCoo/fix/issue-3229
Part of #3229: setting type in a font or style that isn't available warns
2026-10-31 20:12:08 +07:00
BFlat f19e4ff806 Merge pull request #4852 from dotCooCoo/fix/replace-font-hidden-locked
Find Font: Change and Change All leave hidden and locked text alone
2026-10-31 20:11:51 +07:00
BFlat ec40a39749 Merge pull request #4853 from dotCooCoo/fix/opacity-mask-layers
Transparency: Make Opacity Mask over several layers masks their art
2026-10-31 20:11:36 +07:00
BFlat 4992600f0e Merge pull request #4787 from dotCooCoo/fix/pattern-undecoded-marks
Render: pattern tiles draw undecoded-image marks when the view does
2026-10-31 20:11:22 +07:00
BFlat 9fe12a7264 Merge pull request #4789 from dotCooCoo/fix/mask-root-node-mask
Render: an object used as an opacity mask keeps its own opacity mask
2026-10-31 20:11:06 +07:00
BFlat 94d2d068a9 Merge pull request #4828 from dotCooCoo/fix/brush-warp-mask
Brushes: opacity masks on art brush pieces bend with the art
2026-10-31 20:10:52 +07:00
BFlat 72a5442313 Merge pull request #4838 from dotCooCoo/feat/blob-brush-angle-roundness
Blob Brush: Tool Options set the brush's Angle and Roundness
2026-10-31 20:10:37 +07:00
BFlat 52a33d3d8d Merge pull request #4840 from dotCooCoo/fix/dxf-dxf-alter-paths-if-necessary
DXF export: Alter Paths for Appearance outlines only strokes a CAD line can't draw
2026-10-31 20:10:21 +07:00
BFlat 6dff0095ea Merge pull request #4841 from dotCooCoo/fix/dxf-dxf-ellipse
DXF export: ellipses and unevenly scaled circles are written as ELLIPSE
2026-10-31 20:10:07 +07:00
BFlat 6612400fb9 Merge pull request #4839 from dotCooCoo/fix/dxf-dxf-line-entity
DXF export: an open path of one straight segment is written as a LINE
2026-10-31 20:09:52 +07:00
BFlat 40c3519af1 Merge pull request #4842 from dotCooCoo/fix/assemble-keeps-visibility
Outline Stroke, Expand: hidden and locked objects stay hidden and locked
2026-10-31 20:09:38 +07:00
BFlat ce2ca3c017 Merge pull request #4843 from dotCooCoo/fix/select-font-hidden-locked
Find Font: Find leaves out hidden and locked text
2026-10-31 20:09:23 +07:00
BFlat 4094658641 Merge pull request #4844 from dotCooCoo/fix/swatch-delete-plural
Swatches: the delete prompt for several swatches uses each language's plural forms
2026-10-31 20:09:07 +07:00
BFlat 5796c886a4 Merge pull request #4847 from dotCooCoo/fix/docs-mcp-type-underline-fragment
Docs: the type.underline line no longer repeats the end of the sentence before it
2026-10-31 20:08:51 +07:00
BFlat 800c9b9f18 Merge pull request #4848 from dotCooCoo/fix/issue-4837
Fix #4837: the saved color scheme, accent and canvas color show at launch
2026-10-31 20:08:36 +07:00
BFlat d4f8733176 Merge pull request #4859 from dotCooCoo/fix/select-same-fill-live-paint
Select Same: Fill Color from a Live Paint face stays in its Live Paint group
2026-10-31 20:08:22 +07:00
BFlat 40eceb422c Merge pull request #4857 from dotCooCoo/fix/issue-4819
Fix #4819: Convert to Smooth and Corner convert a selected blend's spine
2026-10-31 20:08:07 +07:00
BFlat 31c51b7f45 Merge pull request #4874 from dotCooCoo/fix/issue-4516
Part of #4516: Windows renders start workers only for the cores the process may use
2026-10-31 20:07:53 +07:00
BFlat 2f2b731f03 Merge pull request #4869 from dotCooCoo/fix/issue-4864
Fix #4864: a search pick of an Asset Export command opens the panel
2026-10-31 20:07:37 +07:00
BFlat 257aa3e1f9 Merge pull request #4867 from dotCooCoo/fix/web-shortcut-key-before-text
Shortcuts: in the web build a key-position shortcut uses the key of the same press
2026-10-31 20:07:23 +07:00
Taha-Mahmoodi 811ba8727b Fix #3604: automation file access refuses an NTFS alternate data stream name on Windows
With write root ...\out, a save to ...\out\x.svg:evil was accepted: it stays inside the root, but writes a hidden stream no folder listing shows. A ':' in any name after the drive is now refused with the device names. The check is a plain name test, so it is covered on every platform; the check-then-open race (item 1 of the report) is a documented limitation and is not touched.
2026-10-31 19:43:17 +07:00
marshiyar feb12cf312 Swatch libraries: a device name with an extension gets the - before its first dot (#3602)
CON.txt became CON.txt-.json, whose first part is still CON. It is now CON-.txt.json.
2026-10-31 19:43:17 +07:00
Taha-Mahmoodi f65d28378f Fix #995: a width-profile stroke keeps its shape when the view zooms out
The canvas keeps a hairline visible by raising a stroke's weight to half a device pixel. A width profile multiplies that weight, so a 1 pt stroke with a 6x width point swelled to twice its size at 25% zoom and shrank back on zooming in. The minimum now goes to the profile's widest point instead; plain strokes are unchanged.
2026-10-31 19:43:16 +07:00
Taha-Mahmoodi 59eb658fd7 Fix #2651: Grid Repeat Options has a Preview checkbox
The grid options' public page lists a Preview option: the repeat on the canvas follows the fields while the dialog is open. Object > Repeat > Options had none, so a change showed only after OK. Now a Grid Repeat's dialog has the checkbox: Cancel puts the original back without a history step, OK keeps the previewed values as one undo step. Radial and Mirror Repeat Options are left as they are, since their public pages list no Preview.
2026-10-31 19:43:16 +07:00
bflatastic 2c28ccf020 Gradient mesh: flat pieces follow the quad budget's subdivision
A mesh over the quad budget is cut coarser than asked (#3592); its flat pieces now use the same subdivision, so each patch takes its own quads.
2026-10-31 19:43:16 +07:00
Taha-Mahmoodi a1a3a99104 Fix #3592: a gradient mesh from a file is budgeted at about a million quads
A mesh read from a file can have any number of patches, and the view any zoom: a 150 x 150 mesh from a 3 MB file exported at 20x asked for about 23 million quads (2 GB), and the command's own cap of 50 rows and columns does not apply to a loaded one. One tessellation now makes at most 1,048,576 quads, the subdivision per patch giving way before that, and a mesh with more patches than that is malformed, like a point count that does not fit.
2026-10-31 19:43:16 +07:00
dotCooCoo b13b3260cd Keyboard Shortcuts: a shortcut on the Turkish Q quotation-mark key shows " and runs
Squashed from #4851 onto main.
2026-10-31 19:43:16 +07:00
dotCooCoo f28de75a22 Shortcuts: an exact Shift binding for the typed character wins over a plain binding at Shift+Comma or Shift+Period 2026-10-31 19:43:16 +07:00
dotCooCoo 8363c815ec Perspective: a transform's overflow fallback keeps each entry's powers of two apart
When the conjugate a ∘ self ∘ a⁻¹ overflows, conjugated now forms every
entry of the product as a sum of terms whose factors are split into a
mantissa and a power of two, and scales the whole product by one power of
two from its w row at the end. Scaling each partial product to a largest
entry of 1 could round an entry to 0 that the next factor would restore,
so a projection with entries far apart in size, such as a scale by
(1e160, 1e-160) seen through the same scale, was removed and the art drew
flat.
2026-10-31 19:43:16 +07:00
dotCooCoo ae76455723 Perspective Selection: a move of loose art keeps its plane when 4 clears the active plane
The move drag remembers the plane it places loose art on. Pressing 4
during the drag, or dragging on after it, previews and commits the move
on that plane instead of dropping it. A 1-3 key pressed before the drag
threshold also sets the plane the move uses.
2026-10-31 19:43:16 +07:00
marshiyar 64ffab00a9 Swatch libraries: a library titled with a Windows device name is saved under another name (#3602)
library_file_name kept CON, NUL, COM1 and the like, which Windows treats as
devices, not files. It now adds a - after such a name (CON-.json).

Part of #3602
2026-10-31 19:43:16 +07:00
Don Omondi 9259434a89 SVG export: a gradient mesh patch is cut no finer than its colour changes
Each patch of a gradient mesh was cut into 8 x 8 flat quads for SVG export,
Object > Expand and the other outputs that cannot shade a mesh, whatever its
colours, so a patch of one colour became 64 identical pieces. Neighbouring
quads are now joined into square blocks wherever the colour changes by no
more than about one 8-bit step across the block; the block's outline runs
through its quads' corners, and a patch that folds over itself is not joined.
2026-10-31 19:43:16 +07:00
dotCooCoo 26173437b9 i18n: Bosnian paint-chip tips name Shift+, and Shift+.
The Bosnian catalog still carried the Color (,) and Gradient (.) rows, which no longer match the toolbar's tips. It now translates Color (, or Shift+,) and Gradient (. or Shift+.) like the other catalogs.
2026-10-31 19:43:16 +07:00
dotCooCoo c711ad42f0 Perspective: a transform's overflow fallback scales each partial product
When the conjugate of a projection overflows, it is now formed one factor
at a time, and each partial product is divided by its largest entry
magnitude. Scaling the affine factors up front let the w row underflow to
0, so a scale by 2 seen through a move by 1e308 returned None and the
projection was removed, though its conjugate is finite.
2026-10-31 19:43:16 +07:00
dotCooCoo c15874ba6e Perspective Selection: Shift constrains each object in its own plane
perspective.move takes constrain: true instead of a plane-space
direction. For each object, the command snaps the move to the nearest
axis or 45-degree diagonal of that object's own plane, so a selection on
several planes keeps every object on a line of its plane. The tool sends
the raw pointer with the flag.

On a diagonal, Snap to Grid now moves along the diagonal by the nearer
per-axis correction, so that edge lands on its gridline.
2026-10-31 19:43:16 +07:00
dotCooCoo 64c776af4c Shortcuts: a bound layout candidate for Shift+Period or Shift+Comma wins over the key position 2026-10-31 19:43:16 +07:00
dotCooCoo 375b413ba6 Perspective: a projection that a transform overflows keeps a w row of 1
When conjugating a projection overflows, the scaled-down result is now divided by the largest entry in its w row. A valid conjugate is no longer dropped by the determinant cutoff at the arbitrary scale, and every point of a kept projection passes the horizon test in apply instead of none.
2026-10-31 19:43:16 +07:00
dotCooCoo 9f64452303 Perspective Selection: Snap to Grid keeps a Shift-constrained move on its axis or diagonal
perspective.move takes an optional constrain: [dx, dy], a plane-space
direction. For an in-plane move, Snap to Grid's correction is projected
onto that direction, so a move the Shift key constrains to a plane axis
or a 45-degree diagonal stays on that line when an object edge lies near
a gridline. The Perspective Selection tool sends the direction for
Shift moves and copies. Moves without the param behave as before.
2026-10-31 19:43:16 +07:00