refactor(new_editor/workspace): split workspace model responsibilities

This commit is contained in:
2026-04-15 11:08:18 +08:00
parent 936b10590a
commit feffa36692
6 changed files with 604 additions and 465 deletions

View File

@@ -0,0 +1,28 @@
#include "Workspace/UIEditorWorkspaceModelInternal.h"
namespace XCEngine::UI::Editor {
UIEditorWorkspaceValidationResult ValidateUIEditorWorkspace(
const UIEditorWorkspaceModel& workspace) {
std::unordered_set<std::string> panelIds = {};
UIEditorWorkspaceValidationResult result =
Detail::ValidateNodeRecursive(workspace.root, panelIds);
if (!result.IsValid()) {
return result;
}
if (!workspace.activePanelId.empty()) {
const UIEditorWorkspacePanelState* activePanel =
FindUIEditorWorkspaceActivePanel(workspace);
if (activePanel == nullptr) {
return Detail::MakeValidationError(
UIEditorWorkspaceValidationCode::InvalidActivePanelId,
"Active panel id '" + workspace.activePanelId +
"' is missing or hidden by the current tab selection.");
}
}
return {};
}
} // namespace XCEngine::UI::Editor