diff --git a/src/blackgui/guiutility.cpp b/src/blackgui/guiutility.cpp index 3c4eff8fe..2b78b20fe 100644 --- a/src/blackgui/guiutility.cpp +++ b/src/blackgui/guiutility.cpp @@ -634,4 +634,15 @@ namespace BlackGui return QStringLiteral("").arg(p, QString::number(height)); } + + QDialog *CGuiUtility::findParentDialog(QWidget *widget) + { + if (CGuiUtility::isDialog(widget)) { return qobject_cast(widget); } + while (widget->parent()) + { + widget = widget->parentWidget(); + if (CGuiUtility::isDialog(widget)) { return qobject_cast(widget); } + } + return nullptr; + } } // ns diff --git a/src/blackgui/guiutility.h b/src/blackgui/guiutility.h index 978399162..17623067b 100644 --- a/src/blackgui/guiutility.h +++ b/src/blackgui/guiutility.h @@ -31,6 +31,7 @@ class QLayout; class QMimeData; class QLineEdit; class QTabWidget; +class QDialog; class QGraphicsOpacityEffect; class QAbstractItemModel; @@ -233,6 +234,9 @@ namespace BlackGui //! CIcon as simple HTML image code segment static QString asSimpleHtmlImageHeight(const BlackMisc::CIcon &icon, int height = -1); + //! Find parent dialog if there is any, otherwise null + static QDialog *findParentDialog(QWidget *widget); + private: //! No constructor, use static functions only CGuiUtility() {}