When image resource 1050 declared more bytes than the image resources
hold, the lookup stopped as if the file stored no slices, and Open and
Place brought the artwork in without the warning that the slices were
left out. The new psdread::resource tells a cut-short resource 1050
apart from one that is absent or that follows another block cut short,
and the slices reader passes that error on, so the warning names it.
Other resource readers keep their behavior.
A Radial Blur whose saved centerX or centerY lies outside 0 to 1 draws
at the nearest edge, and its dialog showed the center there. The dialog
kept the saved value in its fields, though, so OK without moving the
center sent that value, and effect.setParams refused it.
The Blur Center box now writes the center it shows, kept within 0 to 1,
into the dialog's fields on every frame, so OK stores the edge.
Setting the Variable field through ui.dialog.set clears Name and Kind
until a frame fills them from the chosen variable. Setting Name or Kind
alone before that frame marked the fields as filled, so the other field
stayed null and the dialog showed "null" for Name or a blank Kind. OK
already read a null field as the variable's own value, so only the
displayed field was wrong.
A frame now fills every field when the chosen variable changes, and
after that fills only a field that is still null, keeping a field that
was set.
A file dropped on a canvas that asks for import options (a layered PSD,
a PDF with several pages, a DXF drawing, a text file) kept only its
placement params in the dialog. The dialog's OK then placed the file in
whichever document was active at that moment, and placed it even when
the dropped-on document had been reverted since.
The drop now carries its target document and revert count in the place
params, as the place cursor's import options carry their token. Placing
checks them on the drop and again on the dialog's OK: the file goes to
the document it was dropped on, which becomes active again, and is not
placed when that document has been closed or reverted. The dialog then
stays open and shows the reason. The checks drop_files ran itself now
run in that one place.
Escape or Enter pressed in the first frame that draws an artboard's name
field was dropped: the field asked for focus and skipped its key checks,
while the dialog kept itself open for the field. The field now ends the
edit on either key in that frame too.
A double-click on an earlier artboard's name, with both clicks in one
frame, replaced the edit of a later artboard before that artboard's field
was drawn, so the name typed there was lost. The typed name now goes to
its artboard before the new field opens.
Follows #7695.
When a selected row listed the twenty tints from 25% through 6% of a color
of an unselected row, Find left that color undimmed although its 5% tint
was free. The search now tries each tint a percent apart from 25% down to
1% before leaving a color as it is.
With the 3D and Materials panel and a classic 3D dialog both showing a
track cube, the two cubes shared one widget id, so the keyboard focus of
one moved the other, and a drag on one cube was read by the other: Escape
there put the first cube's settings into it, and its button-up check ended
the gesture before the cube being dragged saw the release. Each cube now
has its own id, keyed by its dialog or panel, and only the cube a drag
started on follows, restores or ends it.
When Profile inclusion is set to Don't Include Profiles (`profiles:
"none"`), gray, RGB and CMYK images are written in device color spaces
without their ICC profiles, and a JPEG that is kept as is loses its
APP2 ICC_PROFILE segments. PDF/A-2b, PDF/X-3 and PDF/X-4 keep tagging
their images.
Leaving the setting out keeps the earlier output. `profiles` now
serializes as null when not set, `"default"` clears a preset's value,
and Save PDF > Output lists Default first. Presets and stored settings
saved earlier hold `"profiles": "none"`, so exports from them now drop
image profiles.
A row of the rows that aren't selected whose current color was given as a
color value (`[r,g,b]` or a CMYK, gray or Lab object) was left undimmed,
because only string entries went into the dimming map. Such a color now
dims under its color key, the form `recolor.apply` matches it by.
When a click's press lands in one face and its release in the next, the
drag fills both. The bucket now notes the fill every face the drag
crosses had before the press, the release included, so a double-click
or triple-click that follows on such a face compares that fill instead
of the one the first click gave it. This also holds when the release of
the last click crosses into the clicked face.
When the first click makes the Live Paint group, or merges the selection
into a selected group, the crossed face counts with the fill it was made
with: a kept face's paint from the merged group (an unplaced gradient
fixed to its fit), else the fill Make gives it, the topmost fill that
draws of the front-most source path over it that has one. A selected
group's edges no longer count as source paths.
A double-click whose two clicks land on two joined edges now paints the
edges joined through the other edge its clicks painted:
livePaint.strokeEdge takes `through`, edge ids that the join counts as
drawing with `match`, and the tool passes that edge. When the second
press lands on the next edge and is released back on the first, the
double-click matches the first edge's stroke paint from before the
first click.
A press that the view tools take (held Space, the middle button), or
that holds Cmd/Ctrl and goes to the lent selection tool, now counts as
a press that paints nothing, so the clicks around it are not taken for
one triple-click's: the session tells the tool through the new
Tool::press_elsewhere.
The tool doc, docs/mcp.md and the progress-doc line now say that a click
records an undo step only when it changes a paint, and that a
triple-click paints the faces that have the clicked face's fill (and the
edges that draw with the clicked edge's stroke paint) with the bucket's
paint.
Follows #7291.
The tint Find gives a row that isn't selected was skipped when its hex
matched the hex of a selected row's exact key, though `recolor.apply`
matches an exact key only by its key. The lighter tint was taken, and when
every candidate collided the color was left undimmed. Only a "#rrggbb"
entry is now compared by hex.
The hide timer started on every frame with no pointer over the window, so
panels shown by window.panels.peek hid 0.3 s later while the pointer had not
moved. It now starts when the pointer moves, is released or leaves the window,
and a pointer entering the window counts as a move on its first frame.
When a press, a dialog, a popup or a flyout stops holding the panels open
with the pointer away from them, the timer starts as well, so closing a
flyout with Escape hides them without the pointer moving.
The gap after the symbol instance controls was added whenever 4 pt
remained, without the room the Transform link needs after the group.
When a narrow bar left out the symbol controls, the gap could take the
last points the link needed, and the bar hid the link. The gap is now
added only when the reserve remains after it.
#7774's Georgian catalog and #7532's script.run answers rows landed in the same batch with
twelve of the same messages, so bundled_catalogs_are_consistent fails on a duplicate. The
first of each pair stays.