From d685c7d950272e5c074dbbcc9ee9af53399db559 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 3 Aug 2023 14:58:54 +0200 Subject: [PATCH] Utils: Fix FancyMainWindow The FancyMainWindow::dockWidgets() function did find all children, even if there was another FancyMainWindow in the hierarchy with its own dock widget children. Change-Id: I44c2fe669d08a938e86e889caa570d2b19a0cac7 Reviewed-by: Eike Ziller Reviewed-by: --- src/libs/utils/fancymainwindow.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index 323e2508eba..cd8deebb976 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -478,9 +478,25 @@ void FancyMainWindow::restoreSettings(const QHash &settings) } } +static void findDockChildren(QWidget *parent, QList &result) +{ + for (QObject *child : parent->children()) { + QWidget *childWidget = qobject_cast(child); + if (!childWidget) + continue; + + if (auto dockWidget = qobject_cast(child)) + result.append(dockWidget); + else if (!qobject_cast(child)) + findDockChildren(qobject_cast(child), result); + } +} + const QList FancyMainWindow::dockWidgets() const { - return findChildren(); + QList result; + findDockChildren((QWidget *) this, result); + return result; } bool FancyMainWindow::autoHideTitleBars() const