QWindows11Style: Respect background color for flat QPushButtons

Fixes: QTBUG-128781
Pick-to: 6.7
Change-Id: I634d42566ea6249b125da537ac7e60fbd8475635
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
(cherry picked from commit 0b1275f630b5d03f314bc02879301df95b3f1940)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Wladimir Leuschner 2024-09-10 12:55:52 +02:00 committed by Qt Cherry-pick Bot
parent f1bab31ff5
commit 6e6d42a3b3

View File

@ -1433,6 +1433,8 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) { if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) {
if (btn->features.testFlag(QStyleOptionButton::Flat)) { if (btn->features.testFlag(QStyleOptionButton::Flat)) {
painter->setPen(Qt::NoPen); painter->setPen(Qt::NoPen);
painter->setBrush(btn->palette.button());
painter->drawRoundedRect(rect, secondLevelRoundingRadius, secondLevelRoundingRadius);
if (flags & (State_Sunken | State_On)) { if (flags & (State_Sunken | State_On)) {
painter->setBrush(WINUI3Colors[colorSchemeIndex][subtlePressedColor]); painter->setBrush(WINUI3Colors[colorSchemeIndex][subtlePressedColor]);
} }
@ -2154,6 +2156,10 @@ void QWindows11Style::polish(QWidget* widget)
} else if (widget->inherits("QAbstractButton") || widget->inherits("QToolButton")) { } else if (widget->inherits("QAbstractButton") || widget->inherits("QToolButton")) {
widget->setAutoFillBackground(false); widget->setAutoFillBackground(false);
auto pal = widget->palette(); auto pal = widget->palette();
if (QPushButton *btn = qobject_cast<QPushButton*>(widget)) {
if (btn->isFlat() && !pal.isBrushSet(QPalette::Active, QPalette::Button))
pal.setColor(QPalette::Active, QPalette::Button, pal.window().color());
}
if (colorSchemeIndex == 0) { if (colorSchemeIndex == 0) {
pal.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(0x00,0x00,0x00,0x5C)); pal.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(0x00,0x00,0x00,0x5C));
pal.setColor(QPalette::Disabled, QPalette::Button, QColor(0xF9,0xF9,0xF9,0x4D)); pal.setColor(QPalette::Disabled, QPalette::Button, QColor(0xF9,0xF9,0xF9,0x4D));