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() {}