From a6b0bd924581b025e5b55e8677c8f8faabc1747c Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 25 Nov 2016 14:14:36 +0100 Subject: [PATCH] Add utility function to locate the manager for a window --- .../toolwindowmanager/ToolWindowManager.cpp | 22 +++++++++++-------- .../toolwindowmanager/ToolWindowManager.h | 3 ++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp index 8d9f1d136..6e5fabedc 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp @@ -275,6 +275,15 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow) { delete toolWindow; } +ToolWindowManager* ToolWindowManager::managerOf(QWidget* toolWindow) { + if (!toolWindow) { + qWarning("NULL tool window"); + return NULL; + } + + return findClosestParent(toolWindow); +} + void ToolWindowManager::closeToolWindow(QWidget *toolWindow) { if (!toolWindow) { qWarning("NULL tool window"); @@ -282,16 +291,11 @@ void ToolWindowManager::closeToolWindow(QWidget *toolWindow) { } // search up to find the first parent manager - QWidget *parent = toolWindow->parentWidget(); - while(parent) { - ToolWindowManager *manager = qobject_cast(parent); + ToolWindowManager *manager = findClosestParent(toolWindow); - if(manager) { - manager->removeToolWindow(toolWindow); - return; - } - - parent = parent->parentWidget(); + if(manager) { + manager->removeToolWindow(toolWindow); + return; } qWarning("window not child of any tool window"); diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h index 662b22fde..8b6050f00 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h @@ -233,7 +233,8 @@ public: * \a toolWindow must be added to the manager prior to calling this function. */ void hideToolWindow(QWidget* toolWindow) { moveToolWindow(toolWindow, NoArea); } - + + static ToolWindowManager* managerOf(QWidget* toolWindow); static void closeToolWindow(QWidget *toolWindow); static void raiseToolWindow(QWidget *toolWindow);