new_editor: make window sync rollback safe

This commit is contained in:
2026-04-17 22:32:58 +08:00
parent 6f6c8877fa
commit ba8437d919
7 changed files with 419 additions and 6 deletions

View File

@@ -385,12 +385,15 @@ UIEditorWindowWorkspaceSet EditorWindowWorkspaceCoordinator::BuildWindowWorkspac
UIEditorWindowWorkspaceSet windowSet = {};
if (const EditorWindow* primaryWindow = m_hostRuntime.FindPrimaryWindow();
primaryWindow != nullptr &&
primaryWindow->GetHwnd() != nullptr) {
primaryWindow->GetHwnd() != nullptr &&
!primaryWindow->IsClosing()) {
windowSet.primaryWindowId = std::string(primaryWindow->GetWindowId());
}
for (const std::unique_ptr<EditorWindow>& window : m_hostRuntime.GetWindows()) {
if (window == nullptr || window->GetHwnd() == nullptr) {
if (window == nullptr ||
window->GetHwnd() == nullptr ||
window->IsClosing()) {
continue;
}
@@ -405,7 +408,9 @@ UIEditorWindowWorkspaceSet EditorWindowWorkspaceCoordinator::BuildWindowWorkspac
!activeWindowId.empty() &&
([this, activeWindowId]() {
const EditorWindow* activeWindow = m_hostRuntime.FindWindow(activeWindowId);
return activeWindow != nullptr && activeWindow->GetHwnd() != nullptr;
return activeWindow != nullptr &&
activeWindow->GetHwnd() != nullptr &&
!activeWindow->IsClosing();
})()
? std::string(activeWindowId)
: windowSet.primaryWindowId;