Align SRP boundaries and editor windowing

This commit is contained in:
2026-04-26 17:14:32 +08:00
parent a8256b05cd
commit b8599a8aff
38 changed files with 696 additions and 650 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include "Windowing/EditorWindowShared.h"
#include "Windowing/Frame/EditorWindowTransferRequests.h"
#include "Windowing/Host/EditorWindowHostTypes.h"
#include "Windowing/Host/EditorWindowPointerCapture.h"
#include "Windowing/Host/EditorWindowTypes.h"
@@ -8,6 +9,7 @@
#include <XCEditor/Windowing/Presentation/EditorWorkspaceWindowProjection.h>
#include <memory>
#include <filesystem>
#include <string>
#include <string_view>
#include <vector>
@@ -27,8 +29,14 @@ struct UIEditorDockHostTabDropTarget;
namespace XCEngine::UI::Editor::App {
class EditorWindowHostCoordinator;
class EditorWindowContentController;
class EditorWindowDockHostBinding;
class EditorWindowRuntimeController;
struct EditorHostWindowRuntimeInitializationParams {
std::filesystem::path repoRoot = {};
std::filesystem::path captureRoot = {};
bool autoCaptureOnStartup = false;
};
class EditorHostWindow {
public:
@@ -67,6 +75,13 @@ public:
virtual void MarkClosing() = 0;
virtual void MarkDestroyed() = 0;
virtual bool IsRenderReady() const = 0;
virtual bool InitializeRuntime(
const EditorHostWindowRuntimeInitializationParams& params) = 0;
virtual EditorWindowFrameTransferRequests RenderHostFrame(
bool globalTabDragActive) = 0;
virtual void ValidateHostFrame() const = 0;
virtual void RequestSkipNextSteadyStateFrame() = 0;
virtual bool ConsumeSkipNextSteadyStateFrame() = 0;
virtual void Shutdown() = 0;
virtual bool TryGetHostScreenRect(EditorWindowScreenRect& outRect) const = 0;
virtual void SetHostScreenPosition(const EditorWindowScreenPoint& screenPoint) = 0;
@@ -80,7 +95,7 @@ public:
virtual ~EditorWindowHost() = default;
virtual EditorHostWindow* CreateHostWindow(
std::unique_ptr<EditorWindowContentController> contentController,
std::unique_ptr<EditorWindowRuntimeController> runtimeController,
const EditorWindowCreateParams& params) = 0;
virtual EditorHostWindow* FindWindowById(std::string_view windowId) = 0;
virtual const EditorHostWindow* FindWindowById(std::string_view windowId) const = 0;
@@ -106,7 +121,6 @@ public:
virtual ~EditorWindowHostRuntimeServices() = default;
virtual void BindHostCoordinator(EditorWindowHostCoordinator& hostCoordinator) = 0;
virtual void RenderAllWindows() = 0;
};
} // namespace XCEngine::UI::Editor::App