Consolidate the duplicated paste logic and extend XCLIP-carry to every path.
- finalize_paste(): single shared step for PASTECLIP and PASTEORIG —
merge deps + block defs + xdictionary graphs, add clones (optionally
transformed), tessellate solids. A new cross-drawing concern is now wired
once instead of re-implemented per command (the gap that lost the clip on
PASTEORIG in the first place).
- recreate_clipboard_ext_roots() + recreate_ext_subtree(): PASTEBLOCK now
recreates each entity's xdictionary graph and stamps the new root onto the
wrapped entity before defining the block, so the block's nested insert
keeps its spatial filter.
- block_cache: a nested insert's clip is baked into NestedRef.clip_poly at
build time (the spatial filter isn't reachable at expand time) and applied
on expansion — the clipped wires are finalized in an isolated batch set,
clipped, and carried out via Batches.extra_wires. Single-instance only;
arrays of clipped nested inserts fall through unclipped.
All three paste paths (PASTECLIP / PASTEORIG / PASTEBLOCK) now preserve an
XCLIP clip across a cross-drawing paste.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>