From 769a2612d9835aabaf91d8a571c270677f21519a Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 2 Nov 2023 20:28:08 +0000 Subject: [PATCH] When loading a layout, force close any orphaned windows An orphaned window has a NULL parent. An orphaned window is unable to be re-opened if it already exists in m_ToolWindows because when it tries to raise the existing window it does not have a valid parent --- qrenderdoc/Windows/MainWindow.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index caf267fdc..ad2d3825e 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -3101,7 +3101,20 @@ bool MainWindow::LoadLayout(int layout) if(!success) return false; - return restoreState(state); + if(restoreState(state)) + { + // Close any windows which have now become orphaned + foreach(QWidget *toolWindow, ui->toolWindowManager->toolWindows()) + { + if(ui->toolWindowManager->areaOf(toolWindow) == NULL) + { + qInfo() << "Manually closing orphaned window " << toolWindow->objectName(); + ui->toolWindowManager->forceCloseToolWindow(toolWindow); + } + } + return true; + } + return false; } qInfo() << "Couldn't load layout from " << path << " " << f.errorString();