summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanthosh Kumar <santhosh.kumar.selvaraj@qt.io>2023-02-26 08:56:35 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-02-28 19:02:54 +0000
commit7b96dad1e9d2377ca480d0a43a7cfdfabc239ddd (patch)
treef491b7315aaa82a2823afc696042aa9df4c8314a
parent8269d5cd82f00762e7be266a58ae86bda1726a04 (diff)
downloadqtbase-7b96dad1e9d2377ca480d0a43a7cfdfabc239ddd.tar.gz
Add API in QWindowsPrivate to provide window palette
The window uses default palette (QPalette()) to determine frame color (either light or dark). This doesn't work for quickcontrols as they depend quicktheme palettes and they don't overwrite default palettes. This patch add API in QWindowPrivate to provide palette for window and this can be overridden by quickcontrol windows to provide their corresponding palette. Fixes: QTBUG-111491 Change-Id: I39eea20ee7c61ecf0279143c9784da35be15edd3 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 170fadadd67fa97621a7782ea845c314bd9ee09d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/gui/kernel/qwindow_p.h4
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp8
2 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h
index cf6a6934eb..ef633d093a 100644
--- a/src/gui/kernel/qwindow_p.h
+++ b/src/gui/kernel/qwindow_p.h
@@ -23,7 +23,8 @@
#include <QtCore/private/qobject_p.h>
#include <QtCore/qelapsedtimer.h>
#include <QtCore/qxpfunctional.h>
-#include <QtGui/QIcon>
+#include <QtGui/qicon.h>
+#include <QtGui/qpalette.h>
QT_BEGIN_NAMESPACE
@@ -53,6 +54,7 @@ public:
QWindow *topLevelWindow(QWindow::AncestorMode mode = QWindow::IncludeTransients) const;
virtual QWindow *eventReceiver() { Q_Q(QWindow); return q; }
+ virtual QPalette windowPalette() const { return QPalette(); }
virtual void setVisible(bool visible);
void updateVisibility();
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index e4614392f7..7e3be1c0c3 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -852,11 +852,13 @@ static inline bool shouldApplyDarkFrame(const QWindow *w)
// the application has explicitly opted out of dark frames
if (!QWindowsIntegration::instance()->darkModeHandling().testFlag(QWindowsApplication::DarkModeWindowFrames))
return false;
+
// if the application supports a dark border, and the palette is dark (window background color
// is darker than the text), then turn dark-border support on, otherwise use a light border.
- const QPalette defaultPalette;
- return defaultPalette.color(QPalette::WindowText).lightness()
- > defaultPalette.color(QPalette::Window).lightness();
+ auto *dWindow = QWindowPrivate::get(const_cast<QWindow*>(w));
+ const QPalette windowPal = dWindow->windowPalette();
+ return windowPal.color(QPalette::WindowText).lightness()
+ > windowPal.color(QPalette::Window).lightness();
}
QWindowsWindowData