summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@trolltech.com>2010-04-12 13:52:14 (GMT)
committerOlivier Goffart <ogoffart@trolltech.com>2010-04-12 14:31:38 (GMT)
commitd3c1dea37f95ba2bb75a2a264e4d806c4c0c36f3 (patch)
tree647190e184b37f339edf30f6065dfca62dba523e
parent059bf03f30c0e27830d311ae9a664eb0376fcd1f (diff)
downloadQt-d3c1dea37f95ba2bb75a2a264e4d806c4c0c36f3.zip
Qt-d3c1dea37f95ba2bb75a2a264e4d806c4c0c36f3.tar.gz
Qt-d3c1dea37f95ba2bb75a2a264e4d806c4c0c36f3.tar.bz2
CSS: fixes border only affecting the first widget.
Rules like "Foo { border: 2px solid; }" does not specify the border color. When the border color is not specified, it is assumed to be black. When reading the brush value from the cache, we should take that into account. Note that this logic cannot be moved into brushFromData() as it is different for the background. (when no color is specified, it is assumed to be transparent) Reviewed-by: jbache Task-number: QTBUG-9674 (part one)
-rw-r--r--src/gui/text/qcssparser.cpp2
-rw-r--r--tests/auto/qcssparser/tst_qcssparser.cpp13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index 938decd..b3d2526 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -895,7 +895,7 @@ void ValueExtractor::borderValue(const Declaration &decl, int *width, QCss::Bord
BorderData data = qvariant_cast<BorderData>(decl.d->parsed);
*width = lengthValueFromData(data.width, f);
*style = data.style;
- *color = brushFromData(data.color, pal);
+ *color = data.color.type != BrushData::Invalid ? brushFromData(data.color, pal) : QBrush(QColor());
return;
}
diff --git a/tests/auto/qcssparser/tst_qcssparser.cpp b/tests/auto/qcssparser/tst_qcssparser.cpp
index ef102a0..966563c 100644
--- a/tests/auto/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/qcssparser/tst_qcssparser.cpp
@@ -1381,6 +1381,13 @@ void tst_QCssParser::shorthandBackgroundProperty()
QTEST(image, "expectedImage");
QTEST(int(repeat), "expectedRepeatValue");
QTEST(int(alignment), "expectedAlignment");
+
+ //QTBUG-9674 : a second evaluation should give the same results
+ QVERIFY(v.extractBackground(&brush, &image, &repeat, &alignment, &origin, &attachment, &ignoredOrigin));
+ QVERIFY(expectedBrush.color() == brush.color());
+ QTEST(image, "expectedImage");
+ QTEST(int(repeat), "expectedRepeatValue");
+ QTEST(int(alignment), "expectedAlignment");
}
void tst_QCssParser::pseudoElement_data()
@@ -1644,6 +1651,12 @@ void tst_QCssParser::extractBorder()
QVERIFY(widths[QCss::TopEdge] == expectedTopWidth);
QVERIFY(styles[QCss::TopEdge] == expectedTopStyle);
QVERIFY(colors[QCss::TopEdge] == expectedTopColor);
+
+ //QTBUG-9674 : a second evaluation should give the same results
+ QVERIFY(extractor.extractBorder(widths, colors, styles, radii));
+ QVERIFY(widths[QCss::TopEdge] == expectedTopWidth);
+ QVERIFY(styles[QCss::TopEdge] == expectedTopStyle);
+ QVERIFY(colors[QCss::TopEdge] == expectedTopColor);
}
void tst_QCssParser::noTextDecoration()