Add utility function to locate the manager for a window

This commit is contained in:
baldurk
2016-11-25 14:14:36 +01:00
parent 5883820727
commit a6b0bd9245
2 changed files with 15 additions and 10 deletions
+13 -9
View File
@@ -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<ToolWindowManager*>(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<ToolWindowManager*>(parent);
ToolWindowManager *manager = findClosestParent<ToolWindowManager*>(toolWindow);
if(manager) {
manager->removeToolWindow(toolWindow);
return;
}
parent = parent->parentWidget();
if(manager) {
manager->removeToolWindow(toolWindow);
return;
}
qWarning("window not child of any tool window");
+2 -1
View File
@@ -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);