From 063a92d930cbd0ab4db95db3c6c66b6c718f646b Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Thu, 2 Nov 2023 20:22:23 +0000 Subject: [PATCH] Update from toolwindowmanager repository @ 4e4280ca78c --- .../toolwindowmanager/ToolWindowManager.cpp | 23 ++++++++++++------- .../toolwindowmanager/ToolWindowManager.h | 6 +++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp index eeb9ff769..568991863 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp @@ -162,7 +162,7 @@ void ToolWindowManager::addToolWindows(QList toolWindows, } if(m_toolWindows.contains(toolWindow)) { - qWarning("this tool window has already been added"); + qWarning() << "this tool window has already been added" << toolWindow->objectName(); continue; } toolWindow->hide(); @@ -198,7 +198,7 @@ void ToolWindowManager::moveToolWindows(QList toolWindows, { if(!m_toolWindows.contains(toolWindow)) { - qWarning("unknown tool window"); + qWarning() << "unknown tool window:" << (toolWindow ? toolWindow->objectName() : QString()); return; } ToolWindowManagerWrapper *oldWrapper = wrapperOf(toolWindow); @@ -474,7 +474,7 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow, bool allowCloseAlr { if(!m_toolWindows.contains(toolWindow)) { - qWarning("unknown tool window"); + qWarning() << "unknown tool window:" << (toolWindow ? toolWindow->objectName() : QString()); return; } @@ -483,7 +483,8 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow, bool allowCloseAlr if(!manager) { - qWarning("unknown tool window"); + qWarning() << "window not child of any tool window" + << (toolWindow ? toolWindow->objectName() : QString()); return; } @@ -493,6 +494,11 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow, bool allowCloseAlr return; } + forceCloseToolWindow(toolWindow); +} + +void ToolWindowManager::forceCloseToolWindow(QWidget *toolWindow) +{ moveToolWindow(toolWindow, NoArea); m_toolWindows.removeOne(toolWindow); m_toolWindowProperties.remove(toolWindow); @@ -537,7 +543,7 @@ void ToolWindowManager::closeToolWindow(QWidget *toolWindow) return; } - qWarning("window not child of any tool window"); + qWarning() << "window not child of any tool window" << toolWindow->objectName(); } void ToolWindowManager::raiseToolWindow(QWidget *toolWindow) @@ -559,7 +565,7 @@ void ToolWindowManager::raiseToolWindow(QWidget *toolWindow) if(area) area->setCurrentWidget(toolWindow); else - qWarning("parent is not a tool window area"); + qWarning() << "parent is not a tool window area" << toolWindow->objectName(); } QWidget *ToolWindowManager::createToolWindow(const QString &objectName) @@ -681,7 +687,8 @@ void ToolWindowManager::releaseToolWindow(QWidget *toolWindow) ToolWindowManagerArea *previousTabWidget = findClosestParent(toolWindow); if(!previousTabWidget) { - qWarning("cannot find tab widget for tool window"); + qWarning() << "cannot find tab widget for tool window:" + << (toolWindow ? toolWindow->objectName() : QString()); return; } previousTabWidget->removeTab(previousTabWidget->indexOf(toolWindow)); @@ -1466,7 +1473,7 @@ bool ToolWindowManager::allowClose(QWidget *toolWindow) { if(!m_toolWindows.contains(toolWindow)) { - qWarning("unknown tool window"); + qWarning() << "unknown tool window:" << (toolWindow ? toolWindow->objectName() : QString()); return true; } int methodIndex = toolWindow->metaObject()->indexOfMethod( diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h index 9616269d3..0aa034bad 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h @@ -249,6 +249,12 @@ public: static void closeToolWindow(QWidget *toolWindow); static void raiseToolWindow(QWidget *toolWindow); + /*! + * Force close a window, to be used when a toolWindow has become orphaned + * (no valid parent) + */ + void forceCloseToolWindow(QWidget *toolWindow); + /*! * \brief saveState */