Expand XCUI demo editing and bridge hooks

This commit is contained in:
2026-04-05 05:59:54 +08:00
parent 264f8c7372
commit ff44b15396

View File

@@ -13,9 +13,7 @@ Old `editor` replacement is explicitly out of scope for this phase.
- schema document definition data is now retained on `UIDocumentModel` and round-trips through the UI artifact path
- engine runtime coverage was tightened again around `UISystem` and concrete document-host rendering
- `LayoutLab` continues as the editor widget proving ground for tree/list/property-section style controls
- The current editor-host checkpoint additionally hardens the XCUI demo text-editing path and the temporary ImGui host bridge:
- multiline demo text areas now support pointer caret placement, line-number gutters, and tab indent/unindent behavior
- the ImGui bridge now accepts existing shader-resource views and the window renderer exposes an after-UI callback seam
- the demo sandbox and editor bridge APIs were tightened again without touching the old editor replacement scope
- Old `editor` replacement remains deferred; all active execution still stays inside XCUI shared code and `new_editor`.
## Three-Layer Status
@@ -29,7 +27,6 @@ Old `editor` replacement is explicitly out of scope for this phase.
- Build-system hardening for MSVC/PDB output paths has started in root CMake, `engine/CMakeLists.txt`, `new_editor/CMakeLists.txt`, and `tests/NewEditor/CMakeLists.txt`.
- Shared engine-side XCUI runtime scaffolding is now present under `engine/include/XCEngine/UI/Runtime` and `engine/src/UI/Runtime`.
- Shared engine-side `UIDocumentScreenHost` now compiles `.xcui` / `.xctheme` screen documents into a runtime-facing document host path instead of leaving all document ownership in `new_editor`.
- The temporary ImGui bridge can now register an existing shader-resource view directly instead of forcing the caller to recreate a texture SRV from scratch.
- Core regression coverage now includes `UIContext`, layout, style, runtime screen player/system, and real document-host tests through `core_ui_tests`.
Current gap:
@@ -56,12 +53,12 @@ Current gap:
- `new_editor` remains the isolated XCUI sandbox.
- Native hosted preview is working as `RHI offscreen surface -> ImGui shell texture embed`.
- `XCUI Demo` remains the long-lived effect and behavior testbed.
- `XCUI Demo` now covers both single-line and multiline text authoring behavior, including pointer caret placement, line-number gutters, delete/backspace symmetry, and tab indent/unindent in text areas.
- `XCUI Demo` now covers both single-line and multiline text authoring behavior, including click caret placement, delete/backspace, tab indentation, and optional text-area line numbers.
- `LayoutLab` now includes a `ScrollView` prototype and a more editor-like three-column authored layout.
- `LayoutLab` now also covers editor-facing widget prototypes: `TreeView`, `TreeItem`, `ListView`, `ListItem`, `PropertySection`, and `FieldRow`.
- Panel diagnostics were expanded to clearly separate preview/runtime/input state and native vs legacy paths.
- The editor bridge layer now has smoke coverage for swapchain after-UI rendering hooks and SRV-backed ImGui texture descriptor registration.
- `XCNewEditor` builds successfully to `build/new_editor/bin/Debug/XCNewEditor.exe`.
- `new_editor` host plumbing now has a narrower swapchain seam via a window-renderer post-ImGui callback, which is the first practical hook for a future window-level compositor split.
Current gap:
@@ -78,17 +75,17 @@ Current gap:
- `core_ui_tests`: `14/14`
- `core_ui_style_tests`: `5/5`
- `ui_resource_tests`: `7/7`
- `editor_tests` targeted XCUI/editor host API smoke cases: `3/3`
- `editor_tests` targeted bridge smoke: `3/3`
## Landed This Phase
- Demo runtime `TextField` with UTF-8 text insertion, caret state, and backspace.
- Demo runtime multiline `TextArea` path in the sandbox and test coverage for caret movement / multiline input.
- Demo runtime text editing extended with:
- pointer-based caret placement for text inputs
- multiline text-area line-number gutters
- tab indent / shift-tab unindent
- delete handling symmetry with backspace
- Demo runtime text editing was extended with:
- click-to-place caret
- `Delete` support
- `Tab` / `Shift+Tab` indentation for text areas
- optional text-area line-number gutter rendering
- Demo authored resources updated to exercise the input field.
- LayoutLab `ScrollView` prototype with clipping and hover rejection outside clipped content.
- LayoutLab editor-widget prototypes for tree/list/property-style sections with dedicated runtime coverage.
@@ -108,11 +105,11 @@ Current gap:
- mirrored image UV preservation
- external texture binding reuse
- per-batch scissor application
- Editor bridge helpers now expose:
- an `afterUiRender` swapchain callback hook in `D3D12WindowRenderer`
- SRV-view based texture descriptor registration in `ImGuiBackendBridge`
- smoke tests for window renderer, ImGui backend bridge, and console sink registration
- `new_editor` panel/shell diagnostics improvements for hosted preview state.
- ImGui host bridge improvements:
- existing shader-resource view registration overload
- swapchain render callback seam after ImGui submission
- editor-side API smoke coverage for bridge and window renderer accessors
- XCUI asset document loading changed to prefer direct source compilation before `ResourceManager` fallback for the sandbox path, fixing the LayoutLab crash.
- `UIDocumentCompiler.cpp` repaired enough to restore full local builds after the duplicated schema-helper regression.
- MSVC debug build hardening was tightened again so large parallel `engine` rebuilds stop tripping over compile-PDB contention.