refactor(new_editor): streamline internal layout and command routing

This commit is contained in:
2026-04-15 19:30:58 +08:00
parent 9654f4d91a
commit df8f433fbb
84 changed files with 3250 additions and 3008 deletions

View File

@@ -6,7 +6,6 @@
namespace XCEngine::UI::Editor::App::RuntimeSupport {
using ::XCEngine::UI::UIColor;
using ::XCEngine::UI::UIDrawList;
UIEditorShellComposeModel BuildShellComposeModelFromFrame(
@@ -48,49 +47,6 @@ void AppendShellPopups(
}
}
UIEditorShellComposeFrame BuildShellComposeFrameWithoutDockPreview(
const UIEditorShellComposeFrame& frame) {
UIEditorShellComposeFrame copy = frame;
copy.workspaceFrame.dockHostLayout.dropPreview = {};
return copy;
}
UIRect ResolveDockPreviewOverlayRect(const UIEditorShellComposeFrame& frame) {
const auto& dropPreview = frame.workspaceFrame.dockHostLayout.dropPreview;
UIRect previewRect = dropPreview.previewRect;
if (dropPreview.placement != UIEditorWorkspaceDockPlacement::Center) {
return previewRect;
}
for (const Widgets::UIEditorDockHostTabStackLayout& tabStack :
frame.workspaceFrame.dockHostLayout.tabStacks) {
if (tabStack.nodeId == dropPreview.targetNodeId) {
return tabStack.bounds;
}
}
return previewRect;
}
void AppendDockPreviewOverlay(
UIDrawList& drawList,
const UIEditorShellComposeFrame& frame) {
const auto& dropPreview = frame.workspaceFrame.dockHostLayout.dropPreview;
if (!dropPreview.visible) {
return;
}
const UIRect previewRect = ResolveDockPreviewOverlayRect(frame);
if (previewRect.width <= 0.0f || previewRect.height <= 0.0f) {
return;
}
static const UIColor kDropPreviewFillColor(0.56f, 0.56f, 0.56f, 0.06f);
static const UIColor kDropPreviewBorderColor(0.68f, 0.68f, 0.68f, 0.26f);
drawList.AddFilledRect(previewRect, kDropPreviewFillColor);
drawList.AddRectOutline(previewRect, kDropPreviewBorderColor, 1.0f);
}
} // namespace XCEngine::UI::Editor::App::RuntimeSupport
namespace XCEngine::UI::Editor::App {
@@ -108,11 +64,9 @@ void EditorShellRuntime::Append(UIDrawList& drawList) const {
const auto& palette = ResolveUIEditorShellInteractionPalette();
const UIEditorShellComposeModel shellComposeModel =
BuildShellComposeModelFromFrame(m_shellFrame);
const UIEditorShellComposeFrame shellComposeFrame =
BuildShellComposeFrameWithoutDockPreview(m_shellFrame.shellFrame);
AppendUIEditorShellCompose(
drawList,
shellComposeFrame,
m_shellFrame.shellFrame,
shellComposeModel,
m_shellInteractionState.composeState,
palette.shellPalette,
@@ -121,7 +75,11 @@ void EditorShellRuntime::Append(UIDrawList& drawList) const {
m_hierarchyPanel.Append(drawList);
m_inspectorPanel.Append(drawList);
m_projectPanel.Append(drawList);
AppendDockPreviewOverlay(drawList, m_shellFrame.shellFrame);
AppendUIEditorShellComposeOverlay(
drawList,
m_shellFrame.shellFrame,
palette.shellPalette,
metrics.shellMetrics);
AppendShellPopups(drawList, m_shellFrame, palette, metrics);
}