From 6d4b3582adaf3cea23b0ef777a1bf3e7597fd8da Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 24 Jul 2020 15:26:13 +0200 Subject: Windows QPA: Move dark mode handling to the new interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move options to new interface, making them settable from code on this occasion. Task-number: QTBUG-83252 Change-Id: Idd80667c502a8cde5d7c66d7e597ea34c22738e7 Reviewed-by: AndrĂ© de la Rocha Reviewed-by: Tor Arne Vestbø --- .../platforms/windows/qwindowsintegration.cpp | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/plugins/platforms/windows/qwindowsintegration.cpp') 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 -- cgit v1.2.3