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

@@ -1,6 +1,7 @@
#pragma once
#include "Windowing/EditorWindowTransferRequests.h"
#include "Windowing/EditorFrameServices.h"
#include "EditorWindowContentBindings.h"
#include <XCEditor/Foundation/UIEditorTextMeasurement.h>
@@ -50,8 +51,6 @@ class EditorHostResourceService;
namespace XCEngine::UI::Editor::App {
class EditorContext;
struct EditorWindowContentCapabilities {
bool workspace = false;
bool dockHost = false;
@@ -63,7 +62,7 @@ struct EditorWindowContentCapabilities {
struct EditorWindowContentInitializationContext {
const std::filesystem::path& repoRoot;
EditorContext& editorContext;
EditorFrameServices& frameServices;
Rendering::Host::UiTextureHost& textureHost;
Host::EditorHostResourceService& resourceService;
UIEditorTextMeasurer& textMeasurer;
@@ -71,7 +70,7 @@ struct EditorWindowContentInitializationContext {
};
struct EditorWindowContentFrameContext {
EditorContext& editorContext;
EditorFrameServices& frameServices;
const ::XCEngine::UI::UIRect& bounds;
const std::vector<::XCEngine::UI::UIInputEvent>& inputEvents;
std::optional<EditorWindowScreenPoint> cursorScreenPoint = {};
@@ -109,12 +108,14 @@ public:
}
virtual void Initialize(const EditorWindowContentInitializationContext&) {}
virtual void PrepareEditorContext(EditorContext& context, UIEditorTextMeasurer& textMeasurer);
virtual bool IsEditorContextValid(const EditorContext& context) const;
virtual void PrepareFrameServices(
EditorFrameServices& frameServices,
UIEditorTextMeasurer& textMeasurer);
virtual bool AreFrameServicesValid(const EditorFrameServices& frameServices) const;
virtual void AppendInvalidFrame(
const EditorContext& context,
const EditorFrameServices& frameServices,
::XCEngine::UI::UIDrawList& drawList) const;
virtual void NotifyStartupCaptureRequested(EditorContext& context);
virtual void NotifyStartupCaptureRequested(EditorFrameServices& frameServices);
virtual void Shutdown() {}
virtual void ResetInteractionState() {}
virtual void SetViewportSurfacePresentationEnabled(bool) {}