Commit Graph
14127 Commits
Author SHA1 Message Date
dotCooCoo 23d2c07c8a Merge main into fix/tool-overlays-reuse-settled-outline 2026-11-14 05:15:44 -08:00
dotCooCoo 41853dbe4d Merge main into fix/svg-direction-any-case 2026-11-14 05:15:42 -08:00
dotCooCoo 36c62e14d2 Panels: drag autoscroll scrolls the right way in a short list
In a list view shorter than 56 pt the 28 pt top and bottom bands of the
drag autoscroll overlapped, so their speeds partly canceled: in a 40 pt
view a pointer 19 pt down scrolled at 20 pt/s instead of 74. In a view
shorter than 28 pt a pointer just outside one edge scrolled toward the
other. Each band is now at most half the view, so the pointer is in one
band at most. Views of 56 pt or more keep their bands and speeds.

The band and speed math moves into drag_scroll_speed, with a test of
short, tall and invalid view heights.
2026-11-14 05:14:11 -08:00
dotCooCoo b562fc1c54 Text wrap: an out-of-range or non-number offset is refused
object.textWrap.make and object.textWrap.options kept an offset outside
-1000 to 1000 pt at the nearer end of the range, and read an offset that
is not a number, or an invert that is not true or false, as if it had
been left out. Both commands now return an error for such a value and
leave the wrap options and the undo history unchanged. An omitted or
null value still takes the default (6 pt and no invert for Make, the
current options for Text Wrap Options), and Text Wrap Options with only
null values reads the current options. A stored offset outside the range
is kept when only Invert Wrap changes.

The MCP text_wrap tool checks offset, invert and release before it
changes the selection, so a refused call changes nothing, and a release
that is not true or false is an error instead of making a wrap.
2026-11-14 05:12:58 -08:00
dotCooCoo 7aad123a00 Merge main into fix/invert-wrap-offset-band-exact 2026-11-14 05:11:42 -08:00
dotCooCoo b3c2fdab21 Merge main into fix/svg-raster-keeps-resolution 2026-11-14 05:11:34 -08:00
dotCooCoo 01359bc753 Image Trace: a trace made off the UI thread applies only in its own document
A trace handed in for imageTrace.make or imageTrace.makeAndExpand was
matched by its object, image, pixels and settings alone, so a trace made
in one document could stand in for the command in another open document
with the same image and settings. The trace's inputs now carry the
document's uid: TraceRun::current is false in any other document, and the
commands there drop the trace handed in and trace their own image, as one
undo step.

Test: a_trace_run_applies_only_in_its_own_document.
2026-11-14 05:11:34 -08:00
dotCooCoo 7c4fc5ea62 Merge main into docs/mcp-own-folders-arrowheads 2026-11-14 05:11:34 -08:00
dotCooCoo 0c1858f91e Merge main into fix/inflate-lazy-puffs 2026-11-14 05:11:29 -08:00
dotCooCoo dbb145a88b Merge main into fix/type-no-op-undo-more 2026-11-14 05:11:18 -08:00
dotCooCoo 0bdf6823f3 Merge main into fix/svg-masked-shadow 2026-11-14 05:11:15 -08:00
dotCooCoo bc24ad5352 Symbols: a symbol nested in symbol art is measured by its own art
Document::symbol_art_bounds measured a symbol's art without the
document, so an instance of another symbol in that art counted as the
20 x 20 square. It now measures the art through SymbolBoxes, so a nested
instance takes its own symbol's art, and an inline graphic of the outer
symbol is sized by it and follows it when that symbol changes.

- The inline resolve order also follows the instances that size a
  symbol's art, so a symbol is measured after the type in the art of
  the symbols it holds is laid out again.
- A symbol whose art reaches itself through an instance and an inline
  graphic is an empty slot. Only instances that the measurement uses
  count, so one a clipping path hides adds no dependency.
- A missing symbol, a symbol without art, a symbol that holds an
  instance of itself, and nesting 32 deep still measure as the square.
- SymbolBoxes finds symbols through a name index built once, and the
  inline resolve pass and inline_art_bounds share one index, instead
  of scanning the symbol list for each lookup.
2026-11-14 05:10:41 -08:00
dotCooCoo b96d41e277 Merge main into fix/el-missing-message-rows 2026-11-14 05:10:38 -08:00
dotCooCoo 8de86c9144 Merge main into fix/svg-rtl-absolute-chunks 2026-11-14 05:10:03 -08:00
dotCooCoo 9ced1772f4 Merge main into fix/sv-missing-message-rows 2026-11-14 05:09:50 -08:00
dotCooCoo 765a98e49e PDF/.ai export: give the present reason area type with wrap shapes is written as outlines
The text document of the editing data does not hold an area text object's wrap shapes. On reopening, the reader works them out again from the art above the type, which can wrap it differently (a live object written as its drawn pieces) or not at all. The comments on the check in holds and in a thread's frame check now say so, and the outlines test's comment no longer says the wrap object's settings are not written.
2026-11-14 05:09:42 -08:00
dotCooCoo 893af5b3d6 Merge main into fix/perspective-grid-noop-undo 2026-11-14 05:07:49 -08:00
dotCooCoo 786dcc5581 Images: scaled-down images keep their color beside clear pixels
The image crate's filtered resize filters each channel on its own, which
is correct only for premultiplied pixels, and its thumbnail averages each
channel on its own too. Placed images, linked-image previews, MCP
captures and previews, metafile bitmaps, PDF downsampling and library
thumbnails passed straight RGBA to them, so the color under clear pixels
(usually black) bled into the opaque pixels beside them and darkened
cut-out edges.

vectorcraft_doc::resample scales such images with each pixel's color
weighted by its alpha: filtered resampling premultiplies the pixels in
place and divides them back after, and averaging takes the area-weighted
mean of the pixels each new one covers. Opaque and alpha-free images are
scaled as before. PDF export also multiplies the inks of a CMYK image
with alpha by that alpha before resampling them, and divides them by the
resampled alpha after.
2026-11-14 05:07:39 -08:00
dotCooCoo e395ef3362 Merge main into fix/graph-data-import-size-limit 2026-11-14 05:07:35 -08:00
dotCooCoo b73de03cfd Merge main into fix/pdf-tiff-keeps-icc 2026-11-14 05:07:19 -08:00
dotCooCoo 262a44d5c9 Merge main into fix/rasterfilters-deterministic 2026-11-14 05:06:54 -08:00
dotCooCoo 0b37cf2880 Merge main into fix/cs-missing-message-rows 2026-11-14 05:05:52 -08:00
dotCooCoo 1818bacfce Merge main into fix/no-op-undo-steps 2026-11-14 05:05:30 -08:00
dotCooCoo 443ca3cb4a Merge main into fix/colr-radial-negative-start-radius 2026-11-14 05:05:29 -08:00
dotCooCoo b1528a3a5a Merge main into fix/tr-missing-message-rows 2026-11-14 05:05:11 -08:00
dotCooCoo 95c036104f Merge main into fix/pl-missing-message-rows 2026-11-14 05:05:09 -08:00
dotCooCoo 28cac223bc Merge main into fix/ai-large-canvas-symbol-art 2026-11-14 05:03:08 -08:00
dotCooCoo bd672151fa Merge main into fix/issue-7525 2026-11-14 05:02:54 -08:00
dotCooCoo f467325200 Merge main into fix/graph-data-utf16-no-bom 2026-11-14 05:02:42 -08:00
dotCooCoo 7f319f8975 Merge main into fix/ca-missing-message-rows 2026-11-14 05:02:35 -08:00
dotCooCoo 0296e9e12f Merge main into perf/flatten-sweep-staggered-boxes 2026-11-14 05:01:31 -08:00
dotCooCoo fc672f2257 Merge main into fix/followup-7319 2026-11-14 05:01:10 -08:00
dotCooCoo 86bf36ad3a Merge main into fix/uk-missing-message-rows 2026-11-14 05:00:34 -08:00
dotCooCoo 98bf61bb53 Merge main into fix/objects-on-path-widgets-flatten-once 2026-11-14 05:00:14 -08:00
dotCooCoo b79ca7b1f7 Merge main into fix/dimension-second-point-guides 2026-11-14 04:59:53 -08:00
dotCooCoo 6ebe79d3ec Merge main into fix/fi-missing-message-rows 2026-11-14 04:59:38 -08:00
dotCooCoo 190e4be825 Merge main into fix/3d-masked-cap-graphic-once 2026-11-14 04:59:36 -08:00
dotCooCoo 0843e1e331 Merge main into fix/tiled-documents-own-profiles 2026-11-14 04:58:21 -08:00
dotCooCoo 86c1c5d09d Merge main into fix/eps-kshow-composite 2026-11-14 04:57:48 -08:00
dotCooCoo cb9b7c684a Merge main into fix/nl-missing-message-rows 2026-11-14 04:57:47 -08:00
dotCooCoo 3835fb23f5 Merge main into fix/eps-bitmap-glyph-rollback-test 2026-11-14 04:57:25 -08:00
dotCooCoo 0c1fb89757 Merge main into fix/map-links-stop-plates 2026-11-14 04:57:21 -08:00
dotCooCoo c482037570 Merge main into fix/3d-shadow-builds-once 2026-11-14 04:57:13 -08:00
dotCooCoo 7e28425f1c Merge main into feat/ai-insert-aki 2026-11-14 04:56:24 -08:00
dotCooCoo c826a254d0 Merge main into fix/vi-missing-message-rows 2026-11-14 04:56:19 -08:00
dotCooCoo 3152322019 Merge main into fix/eps-cshow-composite-codes 2026-11-14 04:56:04 -08:00
dotCooCoo d7d22a8d7f Merge main into fix/followup-7305 2026-11-14 04:55:55 -08:00
dotCooCoo bad6ee22ea Merge main into fix/place-text-utf16-no-bom 2026-11-14 04:55:27 -08:00
dotCooCoo 9911bb07bc Merge main into test/swatch-batch-spot-options-defaults 2026-11-14 04:55:11 -08:00
dotCooCoo a5664e3030 Merge main into feat/ai-style-named-gradients 2026-11-14 04:54:56 -08:00