diff --git a/src/blackgui/guiutility.cpp b/src/blackgui/guiutility.cpp index aa4fb9cd3..82498c8bd 100644 --- a/src/blackgui/guiutility.cpp +++ b/src/blackgui/guiutility.cpp @@ -247,6 +247,21 @@ namespace BlackGui return Qt::WindowStaysOnTopHint & flags; } + QTabWidget *CGuiUtility::parentTabWidget(QWidget *widget, int maxLevels) + { + int level = 0; + do + { + widget = widget->parentWidget(); + if (!widget) { return nullptr; } + QTabWidget *tw = qobject_cast(widget); + if (tw) { return tw; } + level++; + } + while (level < maxLevels); + return nullptr; + } + bool CGuiUtility::toggleStayOnTop(QWidget *widget) { if (!widget) { return false; } diff --git a/src/blackgui/guiutility.h b/src/blackgui/guiutility.h index 0424d0a68..91f8af377 100644 --- a/src/blackgui/guiutility.h +++ b/src/blackgui/guiutility.h @@ -77,6 +77,9 @@ namespace BlackGui //! Window on top? static bool staysOnTop(QWidget *widget); + //! From a given widget try to find parent tab widget (where widget is embedded) + static QTabWidget *parentTabWidget(QWidget *widget, int maxLevels = 5); + private: //! Constructor, use static methods only CGuiUtility() {}