* Properties: Text Frame section shows inset spacing and vertical justification
Properties › Text Frame now shows the frame's inset spacing under the
columns: Top and Bottom, a link that makes all four the same, then Left
and Right. A non-rectangular frame shows one Inset, the distance its text
keeps from the outline. Four buttons set Vertical Justification to Top,
Center, Bottom or Justify. Type on a path shows neither.
The section also shows with the Type tool in a frame. There it changes
the frame that shows the insertion point, or every frame that holds part
of the selected text, as Object › Text Frame Options does.
* Properties: one Inset for a non-rectangular frame keeps the other sides
The single Inset sets only the top inset, the one kept from the
outline. A rectangular frame that holds part of the same selected text
keeps its own sides.
* Properties: the one Inset field and the composer share the frame outline test
FrameOutline::of_item builds an item's outline with its corner options
applied. The composer uses it to keep the top inset from the outline,
and the Properties panel uses it to decide whether a frame shows one
Inset, so the two give the same answer for every frame.
* Text Frame Options: frames taken while typing stay with their document
OK is refused when another document became active after the dialog opened, so the saved frame ids do not change frames in that document.
* Properties: the inset link starts linked again after Revert
The link's state is kept per document state instead of per document, so
a frame with equal insets in the reverted document starts linked.
* Text Frame Options: frames taken while typing are refused after Revert
Revert keeps the document's id but replaces its state, so a new frame
can reuse a saved frame id. The dialog now ties the frames to the
document state, and OK is refused after Revert as it is in another
document.
* Properties: the one Inset of a non-rectangular frame sets all four sides
The composer bounds a shaped frame's text by its rectangle less all four
insets as well as by the outline, so a single Inset that changed only the
top left hidden sides in place: lowering a uniform 96 pt inset to 0 kept
text overset. When every frame the field changes is shaped, it now sets
all four sides. With a rectangular frame among them, only the top inset
changes and each frame keeps its other sides.
* Fix text frame dialog merge resolution
* Keep text frame preview targets fixed
* Fix target field key inference
* Tests: Text Frame Options show four sides for text through an oval and a rectangle
With the Type tool and text selected through an oval and a threaded
rectangle, with the oval as the caret's stored frame, the dialog shows
the four inset sides, a changed Top leaves the rectangle's other sides
as they were, and the link stays off while the rectangle's sides are
uneven.
* Properties: the inset link starts off when another frame has uneven sides
With selected text that runs through several frames, the link of Text
Frame > Inset Spacing started linked when the frame the section shows had
four equal insets, and a changed Top then set all four sides of every
frame. The link now starts linked only when every frame the field changes
has four equal insets. Its state is kept for that set of frames, so a link
turned on for one frame does not carry over to selected text that also
runs through a frame with uneven sides.
---------
Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
- Corner options use path order for a path with more than one subpath, so
a second rectangle no longer takes the first one's corner order.
- IDML export writes EnableStrokeAndCornerOptions="false" for a style
without corners, so it does not take corners from its based-on style on
import.
- style.object.create and style.object.edit refuse a stroke gap tint
outside 0 to 1 and a stroke type field that its kind does not take, as
object.stroke does. An edit that changes nothing returns restyled: 0.
- New Object Style and Object Style Options read a bare number in the
document's ruler unit, keep a Text Frame General measurement that was
not edited at its exact value, and New Object Style refuses a name
another style has.
- Clear Overrides in the Object Styles panel is enabled when any selected
object differs from its style.
A line set in the open middle of a U-shaped contour now goes down to the
contour's base. The clearance check tests the occupied parts of the
contour in the line's band, as line setting does, instead of its outer
extent across both arms.
Center, Bottom and Justify tested every moved line except the last against
the frame's outline down to its descent, so an outline that narrows under an
earlier line held the text higher by that line's descent. Each moved line is
now tested from its top down to its baseline, and its descenders may cross
the outline, as the last line's already did. Above footnotes and in vertical
frames the descenders still stay inside.
Adds three tests for a text frame anchored inside another anchored text
frame: the outer frame as a member of an anchored group with a rotation
and a scale, the inner frame in a footnote of the outer frame, and the
inner frame in a table cell of the outer frame. Each checks the inner
frame's spread, transform and page.
When the grid step nearest the centered place puts the lines outside a frame that narrows and widens again, Center now tries the steps on both sides of it, nearest first, instead of only the steps above it.
In a frame that narrows and widens again, Bottom, Center and Justify now
try lower grid steps until the lines fit the outline, and leave the lines
in place when none does, instead of taking the next lower step unchecked.
A grid whose step is too small to count across the column is now treated
as no grid when a line is placed, so the line keeps a finite baseline.
Tests cover a waist-shaped frame on a 40 pt grid, a tiny-step grid that
starts away from the line, and Justify with a wrapped paragraph under
All Lines and First Line Only.
Copying a story gives the objects anchored in its table cells and
notes fresh ids down to 64 levels, as the table copy does. A copy whose
stories below that level hold anchored objects, tables or notes is
refused with the nested-too-deeply error instead of recursing without
limit.
The JPEG decoder takes the smallest scale that meets either requested
side. A short side rounds up to the same size at several scales, so a
100 x 2 JPEG asked for at a half decoded at an eighth (13 x 1). The
long side alone now picks the scale, and a decode whose size differs
from the requested reduction is refused, which falls back to the full
decode.
Culling grew an object's box by its unscaled stroke and effect outset,
so a view or repaint patch that showed only the outer part of a scaled
object's stroke or hardened glow skipped the object. Culling now scales
both by the object's largest scale factor, as drawing does. The CMYK
ink-pass area grows each object, and each nested child, by its stroke
and effect outset under its full transform.
object::renumber now gives a story copy's anchors and tables new ids.
Duplicate Layer keys each copied anchor by the original anchor's id,
so copied cross-references point at the copied paragraph, and pairs
copied tables with the originals in order, so objects anchored in
table cells keep their live captions. A copy that renumber reports
incomplete is refused with the nested-too-deeply error.
The one Inset field of a non-rectangular frame and the inset link now
follow the frames the dialog changes: the frame that shows the caret,
or every frame holding selected text. Before, a caret with no stored
frame showed four sides for an oval frame, and the link checked every
frame of the story.
A preview remembers the document it is shown in. When OK is refused or
Cancel is chosen after another document became active, that document
goes back as it was instead of keeping the previewed options.
The frames taken from the caret or selected text are also refused once
the document has changed after the dialog opened. Undo puts back the
document's id counter, so a frame made after Undo can take a stored id.