Refactor editor windowing boundaries

This commit is contained in:
2026-04-26 13:44:19 +08:00
parent c3188da779
commit bd060ba031
20 changed files with 340 additions and 409 deletions

View File

@@ -21,7 +21,7 @@ const UIEditorPanelRegistry& EditorWindowSystem::GetPanelRegistry() const {
bool EditorWindowSystem::BootstrapPrimaryWindow(
std::string_view primaryWindowId,
const UIEditorWorkspaceController& workspaceController,
const UIEditorWindowWorkspaceState& primaryWindowState,
std::string& outError) {
const std::string resolvedPrimaryWindowId =
primaryWindowId.empty() ? std::string("main-window") : std::string(primaryWindowId);
@@ -30,11 +30,9 @@ bool EditorWindowSystem::BootstrapPrimaryWindow(
windowSet.primaryWindowId = resolvedPrimaryWindowId;
windowSet.activeWindowId = resolvedPrimaryWindowId;
UIEditorWindowWorkspaceState primaryWindowState = {};
primaryWindowState.windowId = resolvedPrimaryWindowId;
primaryWindowState.workspace = workspaceController.GetWorkspace();
primaryWindowState.session = workspaceController.GetSession();
windowSet.windows.push_back(std::move(primaryWindowState));
UIEditorWindowWorkspaceState resolvedPrimaryWindowState = primaryWindowState;
resolvedPrimaryWindowState.windowId = resolvedPrimaryWindowId;
windowSet.windows.push_back(std::move(resolvedPrimaryWindowState));
return m_workspaceStore->TrySetWindowSet(std::move(windowSet), outError);
}
@@ -62,30 +60,6 @@ UIEditorWindowWorkspaceController EditorWindowSystem::BuildWorkspaceMutationCont
return UIEditorWindowWorkspaceController(GetPanelRegistry(), GetWindowSet());
}
bool EditorWindowSystem::CommitLiveWindowMutation(
std::string_view windowId,
const UIEditorWorkspaceController& workspaceController,
std::string& outError) {
if (windowId.empty()) {
outError = "live window mutation missing window id";
return false;
}
UIEditorWindowWorkspaceSet nextWindowSet = GetWindowSet();
UIEditorWindowWorkspaceState* existingState =
FindMutableUIEditorWindowWorkspaceState(nextWindowSet, windowId);
if (existingState == nullptr) {
outError =
"live window mutation references unknown window '" +
std::string(windowId) + "'";
return false;
}
existingState->workspace = workspaceController.GetWorkspace();
existingState->session = workspaceController.GetSession();
return m_workspaceStore->TrySetWindowSet(std::move(nextWindowSet), outError);
}
EditorWindowSynchronizationPlan EditorWindowSystem::BuildPlanForWindowSet(
const UIEditorWindowWorkspaceSet& targetWindowSet,
const std::vector<EditorWindowHostSnapshot>& hostWindows,
@@ -104,23 +78,6 @@ EditorWindowSynchronizationPlan EditorWindowSystem::BuildPlanForWindowSet(
outError);
}
EditorWindowSynchronizationPlan EditorWindowSystem::BuildPlanForLiveWindowMutation(
std::string_view windowId,
const UIEditorWorkspaceController& workspaceController,
const std::vector<EditorWindowHostSnapshot>& hostWindows,
std::wstring_view primaryWindowTitle,
std::string& outError) const {
EditorWindowWorkspaceMutationRequest request = {};
request.windowState.windowId = std::string(windowId);
request.windowState.workspace = workspaceController.GetWorkspace();
request.windowState.session = workspaceController.GetSession();
return BuildPlanForWorkspaceMutationRequest(
request,
hostWindows,
primaryWindowTitle,
outError);
}
EditorWindowSynchronizationPlan EditorWindowSystem::BuildPlanForWorkspaceMutationRequest(
const EditorWindowWorkspaceMutationRequest& request,
const std::vector<EditorWindowHostSnapshot>& hostWindows,