From 07b4ebb3ba189de0f0db24328356140550d99f00 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 14 Nov 2016 14:02:35 +0100 Subject: [PATCH] Add a static function for programmatically closing tool windows --- .../toolwindowmanager/ToolWindowManager.cpp | 22 +++++++++++++++++++ .../toolwindowmanager/ToolWindowManager.h | 2 ++ 2 files changed, 24 insertions(+) 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 */