4.3 KiB
4.3 KiB
NewEditor Tree Residual Duplication Closure Plan
Date: 2026-04-22
Status: In Progress
Goal
- Close the true remaining duplication between
HierarchyPaneland the project left tree after theTreePanelHost/UIEditorTreePanelBehaviorcleanup. - Keep the solution rooted in existing modules instead of creating new
Behavior/Host/Supportfiles. - Reduce code only where the duplication is structurally real, not where product semantics differ.
Why A New Plan Is Needed
- The previous plan completed the removal of the tree glue layer.
- That did not automatically mean the hierarchy tree and project tree were free of all true duplication.
- The remaining work is smaller in scope, but it is real and should be tracked separately instead of being hidden under the completed root plan.
Confirmed Residual Duplication
1. Hosted panel command focus claiming is still duplicated
Current duplicated shape:
HierarchyPanel::ClaimCommandFocus(...)ProjectPanel::ClaimCommandFocus(...)InspectorPanel::ClaimCommandFocus(...)
This is app-layer hosted panel behavior, not tree-business behavior.
2. Tree rename host skeleton is still partially duplicated
Current duplicated shape:
ClearRenameState(...)QueueRenameSession(...)TryStartQueuedRenameSession(...)UpdateRenameSession(...)
Notes:
HierarchyPanelhas a single tree surface.ProjectPanelhas both tree and grid rename surfaces.- The commit side-effects must stay local, but the session host skeleton still contains real duplication.
3. Tree append/update skeleton must be re-audited carefully
- Some call order is shared: tree background, tree foreground, inline rename overlay, drop preview.
- But
ProjectPanelalso owns splitter, breadcrumb, grid, context menu, asset drag/drop, and dual-surface rename. - This area must not be “abstracted for symmetry” unless the extracted part is truly stable and reduces code clearly.
Explicit Non-Goals
- Do not merge panel refresh loops.
- Do not merge project tree and asset grid logic.
- Do not move project or scene runtime semantics into
XCEditor. - Do not create any new
Behavior,Host,Helper,Support, or similar glue files. - Do not refactor for visual symmetry when code ownership would become less clear.
Execution Plan
Phase A. Hosted Panel Command Focus Dedup
Status: Completed
Target:
- Consolidate hosted-panel command focus claiming into an existing app-level module.
Rules:
- No new file.
- Prefer extending an existing app-level focus module.
- Update
HierarchyPanel,ProjectPanel, andInspectorPaneltogether if they share the same pattern.
Validation:
- Build
XCUIEditorApp - Smoke test
XCUIEditor.exe
Completed result:
- Consolidated hosted panel command focus claiming into
EditorCommandFocusService.h - Removed duplicated
ClaimCommandFocus(...)implementations fromHierarchyPanel,ProjectPanel, andInspectorPanel - Verified by build and smoke test
Phase B. Tree Rename Host Skeleton Dedup
Status: Pending
Target:
- Reduce duplicated tree rename session host code while preserving local business commit behavior.
Rules:
- No new glue layer.
- Keep tree-generic session mechanics in existing tree/editor modules.
- Keep
ProjectPanelgrid rename semantics local. - Keep
HierarchyPanelscene rename commit local.
Validation:
- Build
XCUIEditorApp - Smoke test
XCUIEditor.exe - Confirm hierarchy rename and project tree/grid rename still start and shut down correctly
Phase C. Final Re-Audit Of Tree Skeleton Duplication
Status: Pending
Target:
- Re-check whether any remaining shared tree call sequence should still be extracted.
Rules:
- Only extract if it removes clear structural duplication.
- If the remaining overlap is just normal orchestration around different business surfaces, record it as intentional and stop.
Validation:
rgverification of targeted duplicate blocks- Build
XCUIEditorApp - Smoke test
XCUIEditor.exe
Acceptance
- Previous root plan is archived.
- Remaining true duplication is tracked separately.
- Hosted panel command focus duplicate is removed from the duplicated panels.
- Tree rename host skeleton duplication is reduced without breaking project grid/tree split semantics.
- No new glue-layer file is introduced.
XCUIEditorAppbuilds and smoke tests pass after each completed phase.