set_by_not_rules tested every rule with a :not() against every element,
while matched_bytes, which charges the import's selector budget, counts
only the rules Index::candidates gives for the element. A style sheet of
many class-keyed :not() rules made the pre-pass test rules x elements
selectors that the budget never saw. It now loops over the same
candidates, which hold every rule that can match the element, so the
properties it returns are unchanged.
The writer compared the top object's patch with the one the reader makes
of the written grid on an even 9 x 9 grid of places. A split side can
change how the reader samples a short curve that falls between those
places, so a top object could be written live although the reader would
map the contents differently there.
Coons::places gives the places in u and v where the patch's sides have
points. Each side runs straight between them, so the writer now compares
the four sides of both patches at every one of those places, within a
third of the tolerance; a point inside a patch blends its sides and
corners, so the patches then lie within the tolerance everywhere.
An immediate paste that asks about swatch conflicts now records the
document it asked in. When another document is active at OK, the
dialog closes as Cancel does and pastes nothing, as Delete Brush does
(dialogs/brush_delete.rs). A deferred paste still goes back to the
document it was given in.
With the Transform group off, the bar no longer reserves room for its link
and X/Y/W/H fields before showing Select Similar Objects. Every control
ahead that is left out for room is now noted, and the button shows only
when nothing ahead was left out. The test sweeps bar widths with
Transform off.
The Assign rows of the Separations panel's Color Settings section (where
Edit > Assign Profile... goes) offer the three choices of the help's
"Assign or remove a color profile": Don't Color Manage This Document, the
working space of the document's color mode with its name, and Profile with
the other profiles of that kind.
The rows act on the profile of the document's color mode, so an RGB
document's RGB profile can be assigned here; before, the row always set
the CMYK profile. Picking the working space assigns its profile, which
stays when the working space changes later. A choice the document already
has runs nothing, and the other model's profile stays as it is.
Params text, docs/mcp.md and the evidence line in
docs/target-app-parity.md are updated, with catalog rows for the new
labels.
In a window narrower than a popup list's rows (Add New Effect, Tracing
Presets and the other lists built on menu_scroll), the list kept its rows
at full width and the popup ran past the window's right edge. The list is
now no wider than the window allows; a row that does not fit ends in an
ellipsis and shows its full text in a tooltip, dimmed rows included.
Screen readers and clicks still use the row's full text.
Menus that ask for a minimum width (the menu bar's 230 pt, submenus and
context menus) take the window's width when it is less, through
menu_min_width.
The long-popup tests now check that the popup ends inside the window,
and a new test covers a shortened row's tooltip, screen-reader name and
click.