new_editor: revalidate same-window workspace mutations
This commit is contained in:
@@ -234,6 +234,7 @@ UIEditorWindowWorkspaceOperationResult UIEditorWindowWorkspaceController::MovePa
|
||||
}
|
||||
|
||||
if (sourceWindowId == targetWindowId) {
|
||||
const UIEditorWindowWorkspaceSet windowSetBefore = m_windowSet;
|
||||
UIEditorWindowWorkspaceState* window =
|
||||
FindMutableUIEditorWindowWorkspaceState(m_windowSet, sourceWindowId);
|
||||
if (window == nullptr) {
|
||||
@@ -261,6 +262,17 @@ UIEditorWindowWorkspaceOperationResult UIEditorWindowWorkspaceController::MovePa
|
||||
}
|
||||
|
||||
m_windowSet.activeWindowId = std::string(targetWindowId);
|
||||
const UIEditorWindowWorkspaceValidationResult validation = ValidateState();
|
||||
if (!validation.IsValid()) {
|
||||
m_windowSet = windowSetBefore;
|
||||
return BuildOperationResult(
|
||||
UIEditorWindowWorkspaceOperationStatus::Rejected,
|
||||
"Move produced invalid state: " + validation.message,
|
||||
sourceWindowId,
|
||||
targetWindowId,
|
||||
panelId);
|
||||
}
|
||||
|
||||
return BuildOperationResult(
|
||||
UIEditorWindowWorkspaceOperationStatus::Changed,
|
||||
"Panel moved within the same window.",
|
||||
@@ -344,6 +356,7 @@ UIEditorWindowWorkspaceOperationResult UIEditorWindowWorkspaceController::DockPa
|
||||
}
|
||||
|
||||
if (sourceWindowId == targetWindowId) {
|
||||
const UIEditorWindowWorkspaceSet windowSetBefore = m_windowSet;
|
||||
UIEditorWindowWorkspaceState* window =
|
||||
FindMutableUIEditorWindowWorkspaceState(m_windowSet, sourceWindowId);
|
||||
if (window == nullptr) {
|
||||
@@ -372,6 +385,17 @@ UIEditorWindowWorkspaceOperationResult UIEditorWindowWorkspaceController::DockPa
|
||||
}
|
||||
|
||||
m_windowSet.activeWindowId = std::string(targetWindowId);
|
||||
const UIEditorWindowWorkspaceValidationResult validation = ValidateState();
|
||||
if (!validation.IsValid()) {
|
||||
m_windowSet = windowSetBefore;
|
||||
return BuildOperationResult(
|
||||
UIEditorWindowWorkspaceOperationStatus::Rejected,
|
||||
"Dock produced invalid state: " + validation.message,
|
||||
sourceWindowId,
|
||||
targetWindowId,
|
||||
panelId);
|
||||
}
|
||||
|
||||
return BuildOperationResult(
|
||||
UIEditorWindowWorkspaceOperationStatus::Changed,
|
||||
"Panel docked within the same window.",
|
||||
|
||||
Reference in New Issue
Block a user