diff --git a/src/blackgui/guiapplication.cpp b/src/blackgui/guiapplication.cpp index ca639cd81..9ea3e11e6 100644 --- a/src/blackgui/guiapplication.cpp +++ b/src/blackgui/guiapplication.cpp @@ -187,13 +187,16 @@ namespace BlackGui if (!mainWindow) { return; } if (m_uiSetupCompleted) { return; } m_uiSetupCompleted = true; + const QString name(this->getApplicationNameVersionBetaDev()); mainWindow->setObjectName(QCoreApplication::applicationName()); mainWindow->setWindowTitle(name); mainWindow->setWindowIcon(m_windowIcon); mainWindow->setWindowIconText(name); - CStyleSheetUtility::setQSysInfoProperties(CGuiApplication::mainApplicationWindow(), true); - emit uiObjectTreeReady(); + CStyleSheetUtility::setQSysInfoProperties(mainWindow, true); + CGuiUtility::registerMainApplicationWindow(mainWindow); + + emit this->uiObjectTreeReady(); } void CGuiApplication::addWindowFlags(Qt::WindowFlags flags) diff --git a/src/blackgui/guiutility.cpp b/src/blackgui/guiutility.cpp index 7d4f973f7..3268f92b4 100644 --- a/src/blackgui/guiutility.cpp +++ b/src/blackgui/guiutility.cpp @@ -39,6 +39,8 @@ using namespace BlackMisc; namespace BlackGui { + QWidget *CGuiUtility::s_mainApplicationWindow = nullptr; + CEnableForFramelessWindow *CGuiUtility::mainFramelessEnabledApplicationWindow() { const QWidgetList tlw = topLevelApplicationWidgetsWithName(); @@ -53,7 +55,7 @@ namespace BlackGui namespace Private { - QWidget *mainApplicationWindowImpl() + QWidget *mainApplicationWindowSearch() { CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); if (mw && mw->getWidget()) @@ -73,15 +75,23 @@ namespace BlackGui } } // ns + void CGuiUtility::registerMainApplicationWindow(QWidget *mainWindow) + { + CGuiUtility::s_mainApplicationWindow = mainWindow; + } + QWidget *CGuiUtility::mainApplicationWindow() { - static QWidget *mw = Private::mainApplicationWindowImpl(); - return mw; + if (!CGuiUtility::s_mainApplicationWindow) + { + CGuiUtility::s_mainApplicationWindow = Private::mainApplicationWindowSearch(); + } + return CGuiUtility::s_mainApplicationWindow; } bool CGuiUtility::isMainWindowFrameless() { - const CEnableForFramelessWindow *mw = mainFramelessEnabledApplicationWindow(); + const CEnableForFramelessWindow *mw = CGuiUtility::mainFramelessEnabledApplicationWindow(); return (mw && mw->isFrameless()); } diff --git a/src/blackgui/guiutility.h b/src/blackgui/guiutility.h index 6ee46149a..ea42c0849 100644 --- a/src/blackgui/guiutility.h +++ b/src/blackgui/guiutility.h @@ -41,6 +41,9 @@ namespace BlackGui //! Main (frameless enabled) application window static CEnableForFramelessWindow *mainFramelessEnabledApplicationWindow(); + //! Register main application window widget if this is known + static void registerMainApplicationWindow(QWidget *mainWindow); + //! Main application window widget static QWidget *mainApplicationWindow(); @@ -131,6 +134,8 @@ namespace BlackGui private: //! Constructor, use static methods only CGuiUtility() {} + + static QWidget *s_mainApplicationWindow; }; } // ns