Track view-scoped overlay placements and retain portalled editors

This commit is contained in:
2026-11-09 18:28:13 +08:00
parent e6b9999202
commit 2f385433be
9 changed files with 73 additions and 6 deletions
+11
View File
@@ -383,3 +383,14 @@ they are not treated as empty paint. CanvasView queries a separate overflow grid
against its viewport. This currently retains the whole view when needed; it is
not selective edge mounting, exact curve bounds, overlay indexing or dirty-region
rendering. Custom renderers must supply a compatible geometry protocol.
`createOverlayIndex(viewId)` owns ephemeral screen-space placements keyed by
instance ID, each with a target incarnation, placement name, measured bounds,
focus and composition state. Registration returns an update/release lease; a
late old lease cannot remove its replacement. `visible(rect, currentTarget)` also
retains focused/composing editors outside the rect and rejects stale targets.
No overlay state enters the document, history, ledger or recovery image. The
application registers frame settings and node style toolbars through an optional
DOM context, including portalled content; legacy and pre-engine renderers use no
registry. Other overlays need explicit registration. Current retention still
suspends culling for the view; it does not selectively mount each overlay target.