Ref T189, allow to set main window (injection)

In swift UI applications we init the main window explicitly, no need afterwars to search for it
This commit is contained in:
Klaus Basan
2017-11-18 18:43:01 +01:00
parent 63fbeecc00
commit 12667bca12
3 changed files with 24 additions and 6 deletions

View File

@@ -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)

View File

@@ -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());
}

View File

@@ -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