mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-11 16:33:22 -06:00
Type: threaded frames do not repeat a continued paragraph's first-line indent or list marker
A paragraph split between two threaded frames took its first-line indent again at the top of the next frame, and a list paragraph drew its bullet or number there again. Each frame is laid out on its own, and its first paragraph kept every paragraph attribute there. A text object now marks a frame whose first paragraph continues from the frame before (first_para_continues, not saved). The thread re-flow sets the mark where each frame's share starts inside a paragraph and measures each share with it, and a restored document reads the marks from its saved text. Area type and type on a path set the first line of such a paragraph as a wrapped line: no first-line indent and no bullet or number. The paragraph after it takes the next number. Release Selection, Remove Threading, Convert To Point Type and copies of a frame clear the mark, so the first paragraph there has its indent and bullet or number again. When Create Outlines, Expand or Expand Appearance takes frames out of a thread, a frame that stays keeps the mark only while it is threaded and the frames before it end inside a paragraph. A frame whose mark changes lays out its first line again, and when it is still threaded, its thread re-flows. When the outlined frame is the last one, the text it has no room for is measured as the frame lays it out: without the first-line indent when it continues a paragraph, and with its numbers counted on from the frames before it. The frame before it now takes exactly the text the last frame has no room for. Duplicates, copies dragged in the Layers panel, the copies that Release to Layers (Build), Release Opacity Mask and Edit Opacity Mask make, and Draw Inside's clipping copy then have their cached bounds computed again, as paste already does for pasted type. Docs: docs/mcp.md, docs/target-app-parity.md.
This commit is contained in:
@@ -896,7 +896,7 @@ pub(crate) fn duplicate_in(d: &mut Document, sel: &mut vectorcraft_doc::Selectio
|
||||
/// document, each original and its copy before the copy goes in, and must leave the document's
|
||||
/// tree as it is. The copies take new ids in the order of `roots`. Roots listed twice, or inside
|
||||
/// another root, are copied one at a time: each copy is made from the document as the copies
|
||||
/// before it left it.
|
||||
/// before it left it. Copied type whose layout caches [`Document::reid`] dropped has them again.
|
||||
pub(crate) fn copy_above(d: &mut Document, roots: &[NodeId], mut change: impl FnMut(&mut Document, &Node, &mut Node)) -> Result<Vec<NodeId>> {
|
||||
let paths = d.index_paths(roots.iter().copied());
|
||||
let mut found: Vec<_> = roots.iter().filter_map(|id| paths.get(id)).collect();
|
||||
@@ -923,6 +923,7 @@ pub(crate) fn copy_above(d: &mut Document, roots: &[NodeId], mut change: impl Fn
|
||||
}
|
||||
out
|
||||
};
|
||||
super::typecmd::refresh_bounds_of(d, &out);
|
||||
Ok(out)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user