diff options
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsintegration.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsintegration.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index aeafff9962..6ec5f6e37f 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -135,9 +135,11 @@ QT_BEGIN_NAMESPACE struct QWindowsIntegrationPrivate { Q_DISABLE_COPY_MOVE(QWindowsIntegrationPrivate) - explicit QWindowsIntegrationPrivate(const QStringList ¶mList); + explicit QWindowsIntegrationPrivate() = default; ~QWindowsIntegrationPrivate(); + void parseOptions(QWindowsIntegration *q, const QStringList ¶mList); + unsigned m_options = 0; QWindowsContext m_context; QPlatformFontDatabase *m_fontDatabase = nullptr; @@ -181,9 +183,13 @@ bool parseIntOption(const QString ¶meter,const QLatin1String &option, return true; } +using DarkModeHandlingFlag = QPlatformInterface::Private::QWindowsApplication::DarkModeHandlingFlag; +using DarkModeHandling = QPlatformInterface::Private::QWindowsApplication::DarkModeHandling; + static inline unsigned parseOptions(const QStringList ¶mList, int *tabletAbsoluteRange, - QtWindows::ProcessDpiAwareness *dpiAwareness) + QtWindows::ProcessDpiAwareness *dpiAwareness, + DarkModeHandling *darkModeHandling) { unsigned options = 0; for (const QString ¶m : paramList) { @@ -223,9 +229,10 @@ static inline unsigned parseOptions(const QStringList ¶mList, } else if (param == u"reverse") { options |= QWindowsIntegration::RtlEnabled; } else if (param == u"darkmode=1") { - options |= QWindowsIntegration::DarkModeWindowFrames; + darkModeHandling->setFlag(DarkModeHandlingFlag::DarkModeWindowFrames); } else if (param == u"darkmode=2") { - options |= QWindowsIntegration::DarkModeWindowFrames | QWindowsIntegration::DarkModeStyle; + darkModeHandling->setFlag(DarkModeHandlingFlag::DarkModeWindowFrames); + darkModeHandling->setFlag(DarkModeHandlingFlag::DarkModeStyle); } else { qWarning() << "Unknown option" << param; } @@ -233,7 +240,7 @@ static inline unsigned parseOptions(const QStringList ¶mList, return options; } -QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mList) +void QWindowsIntegrationPrivate::parseOptions(QWindowsIntegration *q, const QStringList ¶mList) { initOpenGlBlacklistResources(); @@ -242,7 +249,9 @@ QWindowsIntegrationPrivate::QWindowsIntegrationPrivate(const QStringList ¶mL // are connected to Windows 8.1 QtWindows::ProcessDpiAwareness dpiAwareness = QtWindows::ProcessPerMonitorDpiAware; int tabletAbsoluteRange = -1; - m_options = parseOptions(paramList, &tabletAbsoluteRange, &dpiAwareness); + DarkModeHandling darkModeHandling; + m_options = ::parseOptions(paramList, &tabletAbsoluteRange, &dpiAwareness, &darkModeHandling); + q->setDarkModeHandling(darkModeHandling); QWindowsFontDatabase::setFontOptions(m_options); if (tabletAbsoluteRange >= 0) QWindowsContext::setTabletAbsoluteRange(tabletAbsoluteRange); @@ -276,9 +285,10 @@ QWindowsIntegrationPrivate::~QWindowsIntegrationPrivate() QWindowsIntegration *QWindowsIntegration::m_instance = nullptr; QWindowsIntegration::QWindowsIntegration(const QStringList ¶mList) : - d(new QWindowsIntegrationPrivate(paramList)) + d(new QWindowsIntegrationPrivate) { m_instance = this; + d->parseOptions(this, paramList); #if QT_CONFIG(clipboard) d->m_clipboard.registerViewer(); #endif |