Refactor editor window synchronization flow
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Composition/EditorWindowWorkspaceStore.h"
|
||||
#include "Windowing/System/EditorWindowSynchronizationPlan.h"
|
||||
|
||||
#include <XCEditor/Workspace/UIEditorWorkspaceController.h>
|
||||
|
||||
@@ -23,18 +24,34 @@ public:
|
||||
bool ValidateWindowSet(
|
||||
const UIEditorWindowWorkspaceSet& windowSet,
|
||||
std::string& outError) const;
|
||||
bool TrySetWindowSet(
|
||||
UIEditorWindowWorkspaceSet windowSet,
|
||||
std::string& outError);
|
||||
bool UpsertWindowState(
|
||||
const UIEditorWindowWorkspaceState& windowState,
|
||||
bool primary,
|
||||
std::string& outError);
|
||||
void RemoveWindowState(std::string_view windowId, bool primary);
|
||||
bool IsPrimaryWindowId(std::string_view windowId) const;
|
||||
|
||||
const UIEditorWindowWorkspaceSet& GetWindowSet() const;
|
||||
UIEditorWindowWorkspaceController BuildWorkspaceMutationController() const;
|
||||
EditorWindowSynchronizationPlan BuildPlanForWindowSet(
|
||||
const UIEditorWindowWorkspaceSet& targetWindowSet,
|
||||
const std::vector<EditorWindowHostSnapshot>& hostWindows,
|
||||
std::wstring_view primaryWindowTitle,
|
||||
std::string_view preferredNewWindowId,
|
||||
const EditorWindowSynchronizationPlacement& preferredPlacement,
|
||||
std::string& outError) const;
|
||||
EditorWindowSynchronizationPlan BuildPlanForLiveWindowMutation(
|
||||
std::string_view windowId,
|
||||
const UIEditorWorkspaceController& workspaceController,
|
||||
const std::vector<EditorWindowHostSnapshot>& hostWindows,
|
||||
std::wstring_view primaryWindowTitle,
|
||||
std::string& outError) const;
|
||||
EditorWindowSynchronizationPlan BuildPlanForDestroyedWindow(
|
||||
std::string_view windowId,
|
||||
const std::vector<EditorWindowHostSnapshot>& hostWindows,
|
||||
std::wstring_view primaryWindowTitle,
|
||||
std::string& outError) const;
|
||||
EditorWindowSynchronizationPlan BuildSynchronizationPlan(
|
||||
const EditorWindowSynchronizationPlannerInput& input,
|
||||
std::string& outError) const;
|
||||
bool CommitSynchronizationPlan(
|
||||
const EditorWindowSynchronizationPlan& plan,
|
||||
std::string& outError);
|
||||
|
||||
UIEditorWindowWorkspaceOperationResult EvaluateDetachPanelToNewWindow(
|
||||
std::string_view sourceWindowId,
|
||||
@@ -43,6 +60,10 @@ public:
|
||||
UIEditorWindowWorkspaceController& outController) const;
|
||||
|
||||
private:
|
||||
static bool RemoveWindowStateFromSet(
|
||||
UIEditorWindowWorkspaceSet& windowSet,
|
||||
std::string_view windowId);
|
||||
|
||||
EditorWindowWorkspaceStore m_workspaceStore;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user