Set the PlaceholderText color in the palette from the stylesheet as well

The color should be used across the board, so the PlaceholderText color
should also be respecting the one passed for Text and so on.

Fixes: QTBUG-89815
Change-Id: I2accb3db35488f95a1c8ebacf2316a08ee416fac
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit bb00b63dee85bfe77bd721dd962c768e62c1b1e3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Andy Shaw 2021-01-05 15:42:48 +01:00 committed by Qt Cherry-pick Bot
parent 80a0119012
commit a6aa9bca33
2 changed files with 17 additions and 0 deletions

View File

@ -1473,6 +1473,7 @@ void QRenderRule::configurePalette(QPalette *p, QPalette::ColorGroup cg, const Q
p->setBrush(cg, w->foregroundRole(), pal->foreground);
p->setBrush(cg, QPalette::WindowText, pal->foreground);
p->setBrush(cg, QPalette::Text, pal->foreground);
p->setBrush(cg, QPalette::PlaceholderText, pal->foreground);
}
if (pal->selectionBackground.style() != Qt::NoBrush)
p->setBrush(cg, QPalette::Highlight, pal->selectionBackground);

View File

@ -124,6 +124,7 @@ private slots:
void QTBUG15910_crashNullWidget();
void QTBUG36933_brokenPseudoClassLookup();
void styleSheetChangeBeforePolish();
void placeholderColor();
//at the end because it mess with the style.
void widgetStyle();
void appStyle();
@ -2222,6 +2223,21 @@ void tst_QStyleSheetStyle::highdpiImages()
QHighDpiScaling::updateHighDpiScaling(); // reset to normal
}
void tst_QStyleSheetStyle::placeholderColor()
{
const QColor red(Qt::red);
qApp->setStyleSheet("* { color: red; }");
QLineEdit le1;
QLineEdit le2;
le2.setEnabled(false);
le1.ensurePolished();
QCOMPARE(le1.palette().placeholderText(), red);
le2.ensurePolished();
QCOMPARE(le2.palette().placeholderText(), red);
le2.setEnabled(true);
QCOMPARE(le2.palette().placeholderText(), red);
}
QTEST_MAIN(tst_QStyleSheetStyle)
#include "tst_qstylesheetstyle.moc"