QWindows11Style: Revert Windows global palette changes
Revert Windows global palette changes and set the QPalette for QWindows11Style in QWindows11Style::polish Fixes: QTBUG-120571 Change-Id: Iad4eb699c2dbfed38a917e6c9bc378c4262dc66e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit 41854cfaac0fcd2c8f4386a46955716e652c4edc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
27feaf07a9
commit
65cd5a06a0
@ -28,12 +28,12 @@
|
|||||||
#include <QtCore/qthread.h>
|
#include <QtCore/qthread.h>
|
||||||
#include <QtCore/qmutex.h>
|
#include <QtCore/qmutex.h>
|
||||||
#include <QtCore/qwaitcondition.h>
|
#include <QtCore/qwaitcondition.h>
|
||||||
|
#include <QtCore/qoperatingsystemversion.h>
|
||||||
#include <QtGui/qcolor.h>
|
#include <QtGui/qcolor.h>
|
||||||
#include <QtGui/qpalette.h>
|
#include <QtGui/qpalette.h>
|
||||||
#include <QtGui/qguiapplication.h>
|
#include <QtGui/qguiapplication.h>
|
||||||
#include <QtGui/qpainter.h>
|
#include <QtGui/qpainter.h>
|
||||||
#include <QtGui/qpixmapcache.h>
|
#include <QtGui/qpixmapcache.h>
|
||||||
#include <QtCore/qoperatingsystemversion.h>
|
|
||||||
#include <qpa/qwindowsysteminterface.h>
|
#include <qpa/qwindowsysteminterface.h>
|
||||||
#include <QtGui/private/qabstractfileiconengine_p.h>
|
#include <QtGui/private/qabstractfileiconengine_p.h>
|
||||||
#include <QtGui/private/qwindowsfontdatabase_p.h>
|
#include <QtGui/private/qwindowsfontdatabase_p.h>
|
||||||
@ -127,24 +127,6 @@ static constexpr QColor getSysColor(winrt::Windows::UI::Color &&color)
|
|||||||
|
|
||||||
static inline QColor getSysColor(int index)
|
static inline QColor getSysColor(int index)
|
||||||
{
|
{
|
||||||
static const bool isWin11OrUpward = QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows11;
|
|
||||||
static const bool highContrastMode = QWindowsTheme::queryHighContrast();
|
|
||||||
|
|
||||||
if (isWin11OrUpward && !highContrastMode) {
|
|
||||||
switch (index) {
|
|
||||||
case COLOR_WINDOW:
|
|
||||||
return QColor(0xF3,0xF3,0xF3,0xFF);
|
|
||||||
case COLOR_3DFACE:
|
|
||||||
return QColor(0xFF,0xFF,0xFF,0xB3);
|
|
||||||
case COLOR_WINDOWTEXT:
|
|
||||||
case COLOR_BTNTEXT:
|
|
||||||
return QColor(0x00,0x00,0x00,0xE4);
|
|
||||||
case COLOR_HIGHLIGHT:
|
|
||||||
return qt_accentColor(AccentColorNormal);
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
COLORREF cr = GetSysColor(index);
|
COLORREF cr = GetSysColor(index);
|
||||||
return QColor(GetRValue(cr), GetGValue(cr), GetBValue(cr));
|
return QColor(GetRValue(cr), GetGValue(cr), GetBValue(cr));
|
||||||
}
|
}
|
||||||
@ -281,87 +263,35 @@ static QColor placeHolderColor(QColor textColor)
|
|||||||
/*
|
/*
|
||||||
This is used when the theme is light mode, and when the theme is dark but the
|
This is used when the theme is light mode, and when the theme is dark but the
|
||||||
application doesn't support dark mode. In the latter case, we need to check.
|
application doesn't support dark mode. In the latter case, we need to check.
|
||||||
|
|
||||||
The colors for Windows 11 are taken from the official WinUI3 Figma style at
|
|
||||||
https://www.figma.com/community/file/1159947337437047524
|
|
||||||
*/
|
*/
|
||||||
static void populateLightSystemBasePalette(QPalette &result)
|
static void populateLightSystemBasePalette(QPalette &result)
|
||||||
{
|
{
|
||||||
const QColor textColor = QColor(0x00,0x00,0x00,0xE4);
|
const QColor background = getSysColor(COLOR_BTNFACE);
|
||||||
|
|
||||||
const QColor accent = qt_accentColor(AccentColorNormal);
|
|
||||||
const QColor accentDarkest = qt_accentColor(AccentColorDarkest);
|
|
||||||
|
|
||||||
const QColor linkColor = accent;
|
|
||||||
const QColor btnFace = QColor(0xFF,0xFF,0xFF,0xB3);
|
|
||||||
const QColor btnHighlight = getSysColor(COLOR_HIGHLIGHT);
|
|
||||||
|
|
||||||
result.setColor(QPalette::Highlight, getSysColor(COLOR_HIGHLIGHT));
|
|
||||||
result.setColor(QPalette::WindowText, textColor);
|
|
||||||
result.setColor(QPalette::Button, btnFace);
|
|
||||||
result.setColor(QPalette::Light, result.button().color().lighter(150));
|
|
||||||
result.setColor(QPalette::Dark, result.button().color().darker(200));
|
|
||||||
result.setColor(QPalette::Mid, result.button().color().darker(150));
|
|
||||||
result.setColor(QPalette::Text, textColor);
|
|
||||||
result.setColor(QPalette::PlaceholderText, placeHolderColor(textColor));
|
|
||||||
result.setColor(QPalette::BrightText, btnHighlight);
|
|
||||||
result.setColor(QPalette::Base, btnFace);
|
|
||||||
result.setColor(QPalette::Window, QColor(0xF3,0xF3,0xF3,0xFF));
|
|
||||||
result.setColor(QPalette::ButtonText, textColor);
|
|
||||||
result.setColor(QPalette::Midlight, result.button().color().lighter(125));
|
|
||||||
result.setColor(QPalette::Shadow, Qt::black);
|
|
||||||
result.setColor(QPalette::HighlightedText, getSysColor(COLOR_HIGHLIGHTTEXT));
|
|
||||||
result.setColor(QPalette::Accent, accent);
|
|
||||||
result.setColor(QPalette::ToolTipBase, getSysColor(COLOR_WINDOW));
|
|
||||||
result.setColor(QPalette::ToolTipText, getSysColor(COLOR_WINDOWTEXT));
|
|
||||||
|
|
||||||
result.setColor(QPalette::Link, linkColor);
|
|
||||||
result.setColor(QPalette::LinkVisited, accentDarkest);
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Button, result.button().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Window, result.window().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Light, result.light().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Dark, result.dark().color());
|
|
||||||
|
|
||||||
if (result.midlight() == result.button())
|
|
||||||
result.setColor(QPalette::Midlight, result.button().color().lighter(110));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
This is used when the theme is light mode, and when the theme is dark but the
|
|
||||||
application doesn't support dark mode. In the latter case, we need to check.
|
|
||||||
|
|
||||||
The colors for Windows 11 are taken from the official WinUI3 Figma style at
|
|
||||||
https://www.figma.com/community/file/1159947337437047524
|
|
||||||
*/
|
|
||||||
static void populateHighContrastSystemBasePalette(QPalette &result)
|
|
||||||
{
|
|
||||||
const QColor textColor = getSysColor(COLOR_WINDOWTEXT);
|
const QColor textColor = getSysColor(COLOR_WINDOWTEXT);
|
||||||
|
|
||||||
const QColor accent = qt_accentColor(AccentColorNormal);
|
const QColor accent = qt_accentColor(AccentColorNormal);
|
||||||
const QColor accentDarkest = qt_accentColor(AccentColorDarkest);
|
const QColor accentDarkest = qt_accentColor(AccentColorDarkest);
|
||||||
|
|
||||||
const QColor linkColor = accent;
|
const QColor linkColor = accent;
|
||||||
const QColor btnFace = getSysColor(COLOR_3DFACE);
|
const QColor btnFace = background;
|
||||||
const QColor btnHighlight = getSysColor(COLOR_HIGHLIGHT);
|
const QColor btnHighlight = getSysColor(COLOR_BTNHIGHLIGHT);
|
||||||
|
|
||||||
result.setColor(QPalette::Highlight, getSysColor(COLOR_HIGHLIGHT));
|
result.setColor(QPalette::Highlight, getSysColor(COLOR_HIGHLIGHT));
|
||||||
result.setColor(QPalette::WindowText, getSysColor(COLOR_WINDOWTEXT));
|
result.setColor(QPalette::WindowText, getSysColor(COLOR_WINDOWTEXT));
|
||||||
result.setColor(QPalette::Button, btnFace);
|
result.setColor(QPalette::Button, btnFace);
|
||||||
result.setColor(QPalette::Light, result.button().color().lighter(150));
|
result.setColor(QPalette::Light, btnHighlight);
|
||||||
result.setColor(QPalette::Dark, result.button().color().darker(200));
|
result.setColor(QPalette::Dark, getSysColor(COLOR_BTNSHADOW));
|
||||||
result.setColor(QPalette::Mid, result.button().color().darker(150));
|
result.setColor(QPalette::Mid, result.button().color().darker(150));
|
||||||
result.setColor(QPalette::Text, textColor);
|
result.setColor(QPalette::Text, textColor);
|
||||||
result.setColor(QPalette::PlaceholderText, placeHolderColor(textColor));
|
result.setColor(QPalette::PlaceholderText, placeHolderColor(textColor));
|
||||||
result.setColor(QPalette::BrightText, btnHighlight);
|
result.setColor(QPalette::BrightText, btnHighlight);
|
||||||
result.setColor(QPalette::Base, getSysColor(COLOR_3DFACE));
|
result.setColor(QPalette::Base, getSysColor(COLOR_WINDOW));
|
||||||
result.setColor(QPalette::Window, getSysColor(COLOR_WINDOW));
|
result.setColor(QPalette::Window, btnFace);
|
||||||
result.setColor(QPalette::ButtonText, getSysColor(COLOR_BTNTEXT));
|
result.setColor(QPalette::ButtonText, getSysColor(COLOR_BTNTEXT));
|
||||||
result.setColor(QPalette::Midlight, result.button().color().lighter(125));
|
result.setColor(QPalette::Midlight, getSysColor(COLOR_3DLIGHT));
|
||||||
result.setColor(QPalette::Shadow, Qt::black);
|
result.setColor(QPalette::Shadow, getSysColor(COLOR_3DDKSHADOW));
|
||||||
result.setColor(QPalette::HighlightedText, getSysColor(COLOR_HIGHLIGHTTEXT));
|
result.setColor(QPalette::HighlightedText, getSysColor(COLOR_HIGHLIGHTTEXT));
|
||||||
result.setColor(QPalette::Accent, accent);
|
result.setColor(QPalette::Accent, accent);
|
||||||
result.setColor(QPalette::ToolTipBase, getSysColor(COLOR_WINDOW));
|
|
||||||
result.setColor(QPalette::ToolTipText, getSysColor(COLOR_WINDOWTEXT));
|
|
||||||
|
|
||||||
result.setColor(QPalette::Link, linkColor);
|
result.setColor(QPalette::Link, linkColor);
|
||||||
result.setColor(QPalette::LinkVisited, accentDarkest);
|
result.setColor(QPalette::LinkVisited, accentDarkest);
|
||||||
@ -410,7 +340,8 @@ static void populateDarkSystemBasePalette(QPalette &result)
|
|||||||
const QColor accentLightest = accentLighter.lighter(120);
|
const QColor accentLightest = accentLighter.lighter(120);
|
||||||
#endif
|
#endif
|
||||||
const QColor linkColor = accent;
|
const QColor linkColor = accent;
|
||||||
const QColor buttonColor = background.lighter();
|
const QColor buttonColor = background.lighter(200);
|
||||||
|
|
||||||
result.setColor(QPalette::All, QPalette::WindowText, foreground);
|
result.setColor(QPalette::All, QPalette::WindowText, foreground);
|
||||||
result.setColor(QPalette::All, QPalette::Text, foreground);
|
result.setColor(QPalette::All, QPalette::Text, foreground);
|
||||||
result.setColor(QPalette::All, QPalette::BrightText, accentLightest);
|
result.setColor(QPalette::All, QPalette::BrightText, accentLightest);
|
||||||
@ -435,25 +366,14 @@ static void populateDarkSystemBasePalette(QPalette &result)
|
|||||||
result.setColor(QPalette::All, QPalette::ToolTipText, foreground.darker(120));
|
result.setColor(QPalette::All, QPalette::ToolTipText, foreground.darker(120));
|
||||||
result.setColor(QPalette::All, QPalette::PlaceholderText, placeHolderColor(foreground));
|
result.setColor(QPalette::All, QPalette::PlaceholderText, placeHolderColor(foreground));
|
||||||
result.setColor(QPalette::All, QPalette::Accent, accent);
|
result.setColor(QPalette::All, QPalette::Accent, accent);
|
||||||
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Button, result.button().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Window, result.window().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Light, result.light().color());
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Dark, result.dark().color());
|
|
||||||
result.setColor(QPalette::Disabled, QPalette::Text, result.text().color().darker());
|
|
||||||
result.setColor(QPalette::Disabled, QPalette::WindowText, result.windowText().color().darker());
|
|
||||||
|
|
||||||
|
|
||||||
if (result.midlight() == result.button())
|
|
||||||
result.setColor(QPalette::Midlight, result.button().color().lighter(110));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline QPalette toolTipPalette(const QPalette &systemPalette, bool light)
|
static inline QPalette toolTipPalette(const QPalette &systemPalette, bool light)
|
||||||
{
|
{
|
||||||
QPalette result(systemPalette);
|
QPalette result(systemPalette);
|
||||||
const QColor tipBgColor = light ? getSysColor(COLOR_WINDOW)
|
const QColor tipBgColor = light ? getSysColor(COLOR_INFOBK)
|
||||||
: systemPalette.button().color();
|
: systemPalette.button().color();
|
||||||
const QColor tipTextColor = light ? getSysColor(COLOR_WINDOWTEXT)
|
const QColor tipTextColor = light ? getSysColor(COLOR_INFOTEXT)
|
||||||
: systemPalette.buttonText().color().darker(120);
|
: systemPalette.buttonText().color().darker(120);
|
||||||
|
|
||||||
result.setColor(QPalette::All, QPalette::Button, tipBgColor);
|
result.setColor(QPalette::All, QPalette::Button, tipBgColor);
|
||||||
@ -478,16 +398,15 @@ static inline QPalette toolTipPalette(const QPalette &systemPalette, bool light)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
The colors for Windows 11 are taken from the official WinUI3 Figma style at
|
|
||||||
https://www.figma.com/community/file/1159947337437047524
|
|
||||||
*/
|
|
||||||
static inline QPalette menuPalette(const QPalette &systemPalette, bool light)
|
static inline QPalette menuPalette(const QPalette &systemPalette, bool light)
|
||||||
{
|
{
|
||||||
|
if (!light)
|
||||||
|
return systemPalette;
|
||||||
|
|
||||||
QPalette result(systemPalette);
|
QPalette result(systemPalette);
|
||||||
const QColor menuColor = light ? getSysColor(COLOR_3DFACE) : QColor(0x00,0x00,0x00,0xFF);
|
const QColor menuColor = getSysColor(COLOR_MENU);
|
||||||
const QColor menuTextColor = light ? getSysColor(COLOR_WINDOWTEXT) : QColor(0xFF,0xFF,0xFF,0xFF);
|
const QColor menuTextColor = getSysColor(COLOR_MENUTEXT);
|
||||||
const QColor disabled = light ? getSysColor(COLOR_GRAYTEXT) : menuTextColor.darker();
|
const QColor disabled = getSysColor(COLOR_GRAYTEXT);
|
||||||
// we might need a special color group for the result.
|
// we might need a special color group for the result.
|
||||||
result.setColor(QPalette::Active, QPalette::Button, menuColor);
|
result.setColor(QPalette::Active, QPalette::Button, menuColor);
|
||||||
result.setColor(QPalette::Active, QPalette::Text, menuTextColor);
|
result.setColor(QPalette::Active, QPalette::Text, menuTextColor);
|
||||||
@ -495,10 +414,9 @@ static inline QPalette menuPalette(const QPalette &systemPalette, bool light)
|
|||||||
result.setColor(QPalette::Active, QPalette::ButtonText, menuTextColor);
|
result.setColor(QPalette::Active, QPalette::ButtonText, menuTextColor);
|
||||||
result.setColor(QPalette::Disabled, QPalette::WindowText, disabled);
|
result.setColor(QPalette::Disabled, QPalette::WindowText, disabled);
|
||||||
result.setColor(QPalette::Disabled, QPalette::Text, disabled);
|
result.setColor(QPalette::Disabled, QPalette::Text, disabled);
|
||||||
const QColor highlightColor = getSysColor(COLOR_HIGHLIGHT);
|
const bool isFlat = booleanSystemParametersInfo(SPI_GETFLATMENU, false);
|
||||||
result.setColor(QPalette::Active, QPalette::Highlight, highlightColor);
|
const QColor highlightColor = getSysColor(isFlat ? COLOR_MENUHILIGHT : COLOR_HIGHLIGHT);
|
||||||
|
result.setColor(QPalette::Disabled, QPalette::Highlight, highlightColor);
|
||||||
result.setColor(QPalette::Active, QPalette::HighlightedText, menuTextColor);
|
|
||||||
result.setColor(QPalette::Disabled, QPalette::HighlightedText, disabled);
|
result.setColor(QPalette::Disabled, QPalette::HighlightedText, disabled);
|
||||||
result.setColor(QPalette::Disabled, QPalette::Button,
|
result.setColor(QPalette::Disabled, QPalette::Button,
|
||||||
result.color(QPalette::Active, QPalette::Button));
|
result.color(QPalette::Active, QPalette::Button));
|
||||||
@ -519,18 +437,14 @@ static inline QPalette menuPalette(const QPalette &systemPalette, bool light)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
The colors for Windows 11 are taken from the official WinUI3 Figma style at
|
|
||||||
https://www.figma.com/community/file/1159947337437047524
|
|
||||||
*/
|
|
||||||
static inline QPalette *menuBarPalette(const QPalette &menuPalette, bool light)
|
static inline QPalette *menuBarPalette(const QPalette &menuPalette, bool light)
|
||||||
{
|
{
|
||||||
QPalette *result = nullptr;
|
QPalette *result = nullptr;
|
||||||
if (!booleanSystemParametersInfo(SPI_GETFLATMENU, false))
|
if (!light || !booleanSystemParametersInfo(SPI_GETFLATMENU, false))
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
result = new QPalette(menuPalette);
|
result = new QPalette(menuPalette);
|
||||||
const QColor menubar = light ? getSysColor(COLOR_WINDOW) : QColor(0x00,0x00,0x00,0x00);
|
const QColor menubar(getSysColor(COLOR_MENUBAR));
|
||||||
result->setColor(QPalette::Active, QPalette::Button, menubar);
|
result->setColor(QPalette::Active, QPalette::Button, menubar);
|
||||||
result->setColor(QPalette::Disabled, QPalette::Button, menubar);
|
result->setColor(QPalette::Disabled, QPalette::Button, menubar);
|
||||||
result->setColor(QPalette::Inactive, QPalette::Button, menubar);
|
result->setColor(QPalette::Inactive, QPalette::Button, menubar);
|
||||||
@ -666,40 +580,30 @@ void QWindowsTheme::refreshPalettes()
|
|||||||
|
|
||||||
QPalette QWindowsTheme::systemPalette(Qt::ColorScheme colorScheme)
|
QPalette QWindowsTheme::systemPalette(Qt::ColorScheme colorScheme)
|
||||||
{
|
{
|
||||||
static const bool isWin11OrUpward = QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows11;
|
|
||||||
static const bool highContrastMode = QWindowsTheme::queryHighContrast();
|
|
||||||
|
|
||||||
QPalette result = standardPalette();
|
QPalette result = standardPalette();
|
||||||
|
|
||||||
switch (colorScheme) {
|
switch (colorScheme) {
|
||||||
case Qt::ColorScheme::Light:
|
case Qt::ColorScheme::Light:
|
||||||
populateLightSystemBasePalette(result);
|
populateLightSystemBasePalette(result);
|
||||||
break;
|
break;
|
||||||
case Qt::ColorScheme::Dark:
|
case Qt::ColorScheme::Dark:
|
||||||
populateDarkSystemBasePalette(result);
|
populateDarkSystemBasePalette(result);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qFatal("Unknown color scheme");
|
qFatal("Unknown color scheme");
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
if (highContrastMode) {
|
|
||||||
populateHighContrastSystemBasePalette(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.window() != result.base() && (!isWin11OrUpward || highContrastMode)) {
|
if (result.window() != result.base()) {
|
||||||
result.setColor(QPalette::Inactive, QPalette::Highlight,
|
result.setColor(QPalette::Inactive, QPalette::Highlight,
|
||||||
result.color(QPalette::Inactive, QPalette::Window));
|
result.color(QPalette::Inactive, QPalette::Window));
|
||||||
result.setColor(QPalette::Inactive, QPalette::HighlightedText,
|
result.setColor(QPalette::Inactive, QPalette::HighlightedText,
|
||||||
result.color(QPalette::Inactive, QPalette::Text));
|
result.color(QPalette::Inactive, QPalette::Text));
|
||||||
// Only set this if it hasn't been set.
|
result.setColor(QPalette::Inactive, QPalette::Accent,
|
||||||
if (!result.isBrushSet(QPalette::Inactive, QPalette::Accent)) {
|
result.color(QPalette::Inactive, QPalette::Window));
|
||||||
// We set Accent to Window to match the behavior of Windows 11.
|
|
||||||
result.setColor(QPalette::Inactive, QPalette::Accent,
|
|
||||||
result.color(QPalette::Inactive, QPalette::Window));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QColor disabled = (isWin11OrUpward && !highContrastMode) ? result.text().color().darker()
|
const QColor disabled = mixColors(result.windowText().color(), result.button().color());
|
||||||
: mixColors(result.windowText().color(), result.button().color());
|
|
||||||
|
|
||||||
result.setColorGroup(QPalette::Disabled, result.windowText(), result.button(),
|
result.setColorGroup(QPalette::Disabled, result.windowText(), result.button(),
|
||||||
result.light(), result.dark(), result.mid(),
|
result.light(), result.dark(), result.mid(),
|
||||||
|
@ -1906,13 +1906,90 @@ void QWindows11Style::polish(QWidget* widget)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
The colors for Windows 11 are taken from the official WinUI3 Figma style at
|
||||||
|
https://www.figma.com/community/file/1159947337437047524
|
||||||
|
*/
|
||||||
|
static void populateLightSystemBasePalette(QPalette &result)
|
||||||
|
{
|
||||||
|
static QString oldStyleSheet;
|
||||||
|
const bool styleSheetChanged = oldStyleSheet != qApp->styleSheet();
|
||||||
|
|
||||||
|
QPalette standardPalette = QApplication::palette();
|
||||||
|
const QColor textColor = QColor(0x00,0x00,0x00,0xE4);
|
||||||
|
|
||||||
|
const QColor btnFace = QColor(0xFF,0xFF,0xFF,0xB3);
|
||||||
|
const QColor btnHighlight = result.accent().color();
|
||||||
|
const QColor btnColor = result.button().color();
|
||||||
|
|
||||||
|
if (standardPalette.color(QPalette::Highlight) == result.color(QPalette::Highlight) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Highlight, btnHighlight);
|
||||||
|
if (standardPalette.color(QPalette::WindowText) == result.color(QPalette::WindowText) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::WindowText, textColor);
|
||||||
|
if (standardPalette.color(QPalette::Button) == result.color(QPalette::Button) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Button, btnFace);
|
||||||
|
if (standardPalette.color(QPalette::Light) == result.color(QPalette::Light) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Light, btnColor.lighter(150));
|
||||||
|
if (standardPalette.color(QPalette::Dark) == result.color(QPalette::Dark) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Dark, btnColor.darker(200));
|
||||||
|
if (standardPalette.color(QPalette::Mid) == result.color(QPalette::Mid) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Mid, btnColor.darker(150));
|
||||||
|
if (standardPalette.color(QPalette::Text) == result.color(QPalette::Text) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Text, textColor);
|
||||||
|
if (standardPalette.color(QPalette::BrightText) != result.color(QPalette::BrightText) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::BrightText, btnHighlight);
|
||||||
|
if (standardPalette.color(QPalette::Base) == result.color(QPalette::Base) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Base, btnFace);
|
||||||
|
if (standardPalette.color(QPalette::Window) == result.color(QPalette::Window) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Window, QColor(0xF3,0xF3,0xF3,0xFF));
|
||||||
|
if (standardPalette.color(QPalette::ButtonText) == result.color(QPalette::ButtonText) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::ButtonText, textColor);
|
||||||
|
if (standardPalette.color(QPalette::Midlight) == result.color(QPalette::Midlight) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Midlight, btnColor.lighter(125));
|
||||||
|
if (standardPalette.color(QPalette::Shadow) == result.color(QPalette::Shadow) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::Shadow, Qt::black);
|
||||||
|
if (standardPalette.color(QPalette::ToolTipBase) == result.color(QPalette::ToolTipBase) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::ToolTipBase, result.window().color());
|
||||||
|
if (standardPalette.color(QPalette::ToolTipText) == result.color(QPalette::ToolTipText) || styleSheetChanged)
|
||||||
|
result.setColor(QPalette::ToolTipText, result.windowText().color());
|
||||||
|
|
||||||
|
if (result.midlight() == result.button())
|
||||||
|
result.setColor(QPalette::Midlight, btnColor.lighter(110));
|
||||||
|
oldStyleSheet = qApp->styleSheet();
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
void QWindows11Style::polish(QPalette& /*pal*/)
|
void QWindows11Style::polish(QPalette& pal)
|
||||||
{
|
{
|
||||||
highContrastTheme = QGuiApplicationPrivate::colorScheme() == Qt::ColorScheme::Unknown;
|
highContrastTheme = QGuiApplicationPrivate::colorScheme() == Qt::ColorScheme::Unknown;
|
||||||
colorSchemeIndex = QGuiApplicationPrivate::colorScheme() == Qt::ColorScheme::Light ? 0 : 1;
|
colorSchemeIndex = QGuiApplicationPrivate::colorScheme() == Qt::ColorScheme::Light ? 0 : 1;
|
||||||
|
|
||||||
|
if (!highContrastTheme && colorSchemeIndex == 0)
|
||||||
|
populateLightSystemBasePalette(pal);
|
||||||
|
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Button) == pal.color(QPalette::Inactive, QPalette::Button))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Button, pal.button().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Window) == pal.color(QPalette::Inactive, QPalette::Window))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Window, pal.window().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Light) == pal.color(QPalette::Inactive, QPalette::Light))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Light, pal.light().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Dark) == pal.color(QPalette::Inactive, QPalette::Dark))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Dark, pal.dark().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Accent) == pal.color(QPalette::Inactive, QPalette::Accent))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Accent, pal.accent().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Highlight) == pal.color(QPalette::Inactive, QPalette::Highlight))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Highlight, pal.highlight().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::HighlightedText) == pal.color(QPalette::Inactive, QPalette::HighlightedText))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::HighlightedText, pal.highlightedText().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::Text) == pal.color(QPalette::Inactive, QPalette::Text))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::Text, pal.text().color());
|
||||||
|
if (standardPalette().color(QPalette::Inactive, QPalette::WindowText) == pal.color(QPalette::Inactive, QPalette::WindowText))
|
||||||
|
pal.setColor(QPalette::Inactive, QPalette::WindowText, pal.windowText().color());
|
||||||
|
|
||||||
|
if (highContrastTheme)
|
||||||
|
pal.setColor(QPalette::Active, QPalette::HighlightedText, pal.windowText().color());
|
||||||
}
|
}
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user