refactor(ui): own retained controller lifetimes

This commit is contained in:
Erik 2026-07-10 23:35:26 +02:00
parent 921c388e2c
commit 5d9e98c118
21 changed files with 373 additions and 35 deletions

View file

@ -38,6 +38,9 @@ synthesis + six deep-dive docs under
geometry events, lock propagation, and controller teardown.
- `IRetainedPanelController.cs` — disposable lifecycle contract for
panel-specific show/hide and descendant-focus behavior.
- `RetainedPanelControllerGroup.cs` — one typed lifecycle owner for windows
whose imported subtree is bound by multiple focused controllers; teardown is
idempotent and runs in reverse construction order.
- `RetailWindowLayoutPersistence.cs` / `IRetainedWindowStateController.cs`
per-character/per-resolution bounds, visibility, collapse/maximize, legacy
migration, and safe resolution-clamped restore.
@ -45,7 +48,8 @@ synthesis + six deep-dive docs under
contract for imported-chrome and shared-wrapper windows.
- `UiHost.cs` — one-shot wrapper: owns the `UiRoot`, a `TextRenderer`,
and a default `BitmapFont`. Provides `WireMouse` / `WireKeyboard`
helpers for Silk.NET plumbing.
helpers for Silk.NET plumbing and removes those device subscriptions before
disposing the window manager/controllers and renderer.
## Integration pattern