diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-24 15:26:13 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-25 21:59:37 +0200 |
commit | 6d4b3582adaf3cea23b0ef777a1bf3e7597fd8da (patch) | |
tree | e5ba098842acc19330caa11ac542f3752b0a5034 /src/plugins/platforms/windows/qwindowsintegration.cpp | |
parent | f06dfb60b96004971917a27559713314b7f60de6 (diff) |
Windows QPA: Move dark mode handling to the new interface
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 <andre.rocha@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
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 |