editor: switch workspace window sync to projection payload

This commit is contained in:
2026-04-26 01:39:03 +08:00
parent 306fa521ff
commit 67f52c69de
16 changed files with 371 additions and 90 deletions

View File

@@ -23,6 +23,29 @@ UIEditorWorkspaceController BuildWorkspaceControllerForWindowState(
windowState.session);
}
EditorWorkspaceWindowProjection BuildEditorWorkspaceWindowProjection(
std::wstring_view primaryWindowTitle,
const UIEditorPanelRegistry& panelRegistry,
const UIEditorWindowWorkspaceState& windowState,
bool primary) {
const UIEditorWorkspaceController workspaceController =
BuildWorkspaceControllerForWindowState(panelRegistry, windowState);
EditorWorkspaceWindowProjection projection = {};
projection.windowState = windowState;
projection.minimumOuterSize = ResolveUIEditorDetachedWorkspaceMinimumOuterSize(
workspaceController);
projection.useDetachedTitleBarTabStrip = HasUIEditorSingleVisibleRootTab(workspaceController);
projection.tabStripTitleText = ResolveUIEditorDetachedWorkspaceTitle(workspaceController);
projection.detachedWindowTitleText = ResolveUIEditorDetachedWorkspaceTitle(workspaceController);
projection.windowTitle = ResolveEditorWindowPresentationTitle(
primaryWindowTitle,
panelRegistry,
windowState,
primary);
return projection;
}
std::wstring ResolveEditorWindowPresentationTitle(
std::wstring_view primaryWindowTitle,
const UIEditorPanelRegistry& panelRegistry,