Fix Qt6 todo in qcssparser

Colors with wrong number of elements are now invalid.

Change-Id: I32c934894de86095d9790baa5f0d2001d76bcd3c
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
bb10
Allan Sandfeld Jensen 2020-09-10 13:05:02 +02:00
parent df4cbaf8dc
commit 7c1f94f387
2 changed files with 8 additions and 6 deletions

View File

@ -770,11 +770,14 @@ static ColorData parseColorValue(QCss::Value v)
if (tokenCount < 5)
return ColorData();
// ### Qt6: replace this with a check and return invalid color when token count does not match
if (hasAlpha && tokenCount != 7)
if (hasAlpha && tokenCount != 7) {
qWarning("QCssParser::parseColorValue: Specified color with alpha value but no alpha given: '%s'", qPrintable(lst.join(QLatin1Char(' '))));
if (!hasAlpha && tokenCount != 5)
return ColorData();
}
if (!hasAlpha && tokenCount != 5) {
qWarning("QCssParser::parseColorValue: Specified color without alpha value but alpha given: '%s'", qPrintable(lst.join(QLatin1Char(' '))));
return ColorData();
}
int v1 = colorDigits.at(0).variant.toInt();
int v2 = colorDigits.at(2).variant.toInt();

View File

@ -860,9 +860,8 @@ void tst_QCssParser::colorValue_data()
QTest::newRow("role2") << "color: palette( window-text ) " << qApp->palette().color(QPalette::WindowText);
QTest::newRow("transparent") << "color: transparent" << QColor(Qt::transparent);
// ### Qt6: no longer valid
QTest::newRow("rgb-invalid") << "color: rgb(10, 20, 30, 40)" << QColor(10, 20, 30, 40);
QTest::newRow("rgba-invalid") << "color: rgba(10, 20, 30)" << QColor(10, 20, 30, 255);
QTest::newRow("rgb-invalid") << "color: rgb(10, 20, 30, 40)" << QColor();
QTest::newRow("rgba-invalid") << "color: rgba(10, 20, 30)" << QColor();
}
void tst_QCssParser::colorValue()