Add UI core node lifetime handles

This commit is contained in:
2026-06-06 09:00:24 +02:00
parent 7a9dd150e3
commit d963daae70
8 changed files with 763 additions and 5 deletions

View File

@@ -733,6 +733,11 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
and platform triplet migration. Root CMake target
`panopainter_platform_build_vcpkg_ui_core` focuses that gate on the
vcpkg-backed `pp_ui_core`/tinyxml2 boundary and `pp_ui_core_layout_xml_tests`.
- `pp_ui_core` now owns a pure `NodeLifetimeTree` target model with checked
node handles, hidden parent/child invariants, scoped callback connections,
mutation-safe event dispatch, and focused destroy-during-callback coverage in
`pp_ui_core_node_lifetime_tests`. Retained `Node` still needs to adopt those
semantics under DEBT-0063.
- `scripts/automation/analyze.*` runs shader validation plus a
renderer-boundary guard that reports JSON and fails if active non-backend
source code reintroduces raw `GL_*`/`WGL_*` constants outside the allowed
@@ -1248,8 +1253,9 @@ Known warnings after the current CMake app build:
`ShaderManager::ext_*` fields directly.
- `pp_legacy_ui_core` is an object-library containment boundary because the
retained base `Node` controls still depend on legacy renderer and app
headers. It should shrink as layout parsing, colors, generic controls, and
text/image primitives move to `pp_ui_core`.
headers. It should shrink as layout parsing, colors, generic controls,
tested node lifetime handles/connections, and text/image primitives move to
`pp_ui_core`.
- `pp_panopainter_ui` currently surfaces existing legacy `Node`/`Serializer`
header and static-analysis warnings while it still depends on
`pp_legacy_app`; these should be reduced as the UI core/app UI boundary is