Fix QPainter::drawText with complex brushes

Commit d52fd497f6 introduced a call path to
QPaintEngineEx::drawStaticTextItem, which has a bug in using the pen's color
instead of the entire brush.

This patch replaces the use of the color with the pen's brush().

Task-number: QTBUG-23450
Change-Id: Ieb3bf352c840ff0d3fb4ac678caf7b13f4f9a8f1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
This commit is contained in:
Simon Hausmann 2012-01-04 16:32:55 +01:00 committed by Qt by Nokia
parent ecb57cfc32
commit 73187281c3
2 changed files with 25 additions and 1 deletions

View File

@ -1072,7 +1072,7 @@ void QPaintEngineEx::drawStaticTextItem(QStaticTextItem *staticTextItem)
changedHints = true;
}
fill(qtVectorPathForPath(path), s->pen.color());
fill(qtVectorPathForPath(path), s->pen.brush());
if (changedHints) {
s->renderHints = oldHints;

View File

@ -256,6 +256,8 @@ private slots:
void drawTextOutsideGuiThread();
void drawTextWithComplexBrush();
private:
void fillData();
void setPenColor(QPainter& p);
@ -4305,6 +4307,28 @@ void tst_QPainter::drawTextOutsideGuiThread()
QCOMPARE(referenceRendering, t.rendering);
}
void tst_QPainter::drawTextWithComplexBrush()
{
QImage texture(10, 10, QImage::Format_ARGB32_Premultiplied);
texture.fill(Qt::red);
QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::white);
QPainter p(&image);
QFont f = p.font();
f.setPixelSize(70);
p.setFont(f);
QBrush brush(Qt::white);
brush.setTextureImage(texture);
p.setPen(QPen(brush, 2));
p.drawText(10, 10, "Hello World");
int paintedPixels = getPaintedPixels(image, Qt::white);
QVERIFY(paintedPixels > 0);
}
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"