refactor(editor): isolate windowing from composition runtime

This commit is contained in:
2026-04-27 23:45:24 +08:00
parent 603d003684
commit 6b488d5eac
34 changed files with 418 additions and 193 deletions

View File

@@ -16,9 +16,11 @@ public:
DefaultEditorWindowContentFactory(
EditorWindowSystem& windowSystem,
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
EditorWorkspaceShellRuntimeFactory workspaceShellRuntimeFactory,
EditorUtilityWindowPanelFactory utilityPanelFactory)
: m_windowSystem(windowSystem)
, m_workspacePanelFactory(std::move(workspacePanelFactory))
, m_workspaceShellRuntimeFactory(std::move(workspaceShellRuntimeFactory))
, m_utilityPanelFactory(std::move(utilityPanelFactory)) {}
std::unique_ptr<EditorWindowContentController> CreateWorkspaceContentController(
@@ -27,10 +29,14 @@ public:
m_workspacePanelFactory
? m_workspacePanelFactory()
: EditorWorkspacePanelRuntimeSet{};
std::unique_ptr<EditorWorkspaceShellRuntime> shellRuntime =
m_workspaceShellRuntimeFactory
? m_workspaceShellRuntimeFactory(std::move(workspacePanels))
: nullptr;
return CreateEditorWorkspaceWindowContentController(
windowState,
m_windowSystem,
std::move(workspacePanels));
std::move(shellRuntime));
}
std::unique_ptr<EditorWindowContentController> CreateUtilityContentController(
@@ -47,6 +53,7 @@ public:
private:
EditorWindowSystem& m_windowSystem;
EditorWorkspacePanelRuntimeSetFactory m_workspacePanelFactory = {};
EditorWorkspaceShellRuntimeFactory m_workspaceShellRuntimeFactory = {};
EditorUtilityWindowPanelFactory m_utilityPanelFactory = {};
};
@@ -55,10 +62,12 @@ private:
std::unique_ptr<EditorWindowContentFactory> CreateDefaultEditorWindowContentFactory(
EditorWindowSystem& windowSystem,
EditorWorkspacePanelRuntimeSetFactory workspacePanelFactory,
EditorWorkspaceShellRuntimeFactory workspaceShellRuntimeFactory,
EditorUtilityWindowPanelFactory utilityPanelFactory) {
return std::make_unique<DefaultEditorWindowContentFactory>(
windowSystem,
std::move(workspacePanelFactory),
std::move(workspaceShellRuntimeFactory),
std::move(utilityPanelFactory));
}