diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp index 2c83b55b6..2dc2c0c5d 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp @@ -274,6 +274,28 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow) { delete toolWindow; } +void ToolWindowManager::closeToolWindow(QWidget *toolWindow) { + if (!toolWindow) { + qWarning("NULL tool window"); + return; + } + + // search up to find the first parent manager + QWidget *parent = toolWindow->parentWidget(); + while(parent) { + ToolWindowManager *manager = qobject_cast(parent); + + if(manager) { + manager->removeToolWindow(toolWindow); + return; + } + + parent = parent->parentWidget(); + } + + qWarning("window not child of any tool window"); +} + QWidget* ToolWindowManager::createToolWindow(const QString& objectName) { if (m_createCallback) { diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h index 4ea88079a..02653fb55 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h @@ -234,6 +234,8 @@ public: */ void hideToolWindow(QWidget* toolWindow) { moveToolWindow(toolWindow, NoArea); } + static void closeToolWindow(QWidget *toolWindow); + /*! * \brief saveState */