diff options
-rw-r--r-- | src/gui/text/qstatictext.cpp | 2 | ||||
-rw-r--r-- | tests/auto/gui/text/qstatictext/tst_qstatictext.cpp | 55 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index a10071490e..dbc2e6e558 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -622,6 +622,8 @@ void QStaticTextPrivate::paintText(const QPointF &topLeftPosition, QPainter *p) if (textWidth >= 0.0) line.setLineWidth(textWidth); + else + line.setLineWidth(QFIXED_MAX); height += leading; line.setPosition(QPointF(0.0, height)); height += line.height(); diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp index ec30cc8b67..b3d1b75a42 100644 --- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp +++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp @@ -96,6 +96,8 @@ private slots: void textDocumentColor(); #endif + void multiLine(); + private: bool supportsTransformations() const; @@ -854,5 +856,58 @@ void tst_QStaticText::textDocumentColor() } #endif +class TestPaintEngine: public QPaintEngine +{ +public: + void drawTextItem(const QPointF &p, const QTextItem &textItem) Q_DECL_OVERRIDE + { + differentVerticalPositions.insert(qRound(p.y())); + } + + void updateState(const QPaintEngineState &) Q_DECL_OVERRIDE {} + + void drawPolygon(const QPointF *, int , PolygonDrawMode ) Q_DECL_OVERRIDE {} + + bool begin(QPaintDevice *) Q_DECL_OVERRIDE { return true; } + bool end() Q_DECL_OVERRIDE { return true; } + void drawPixmap(const QRectF &, const QPixmap &, const QRectF &) Q_DECL_OVERRIDE {} + Type type() const Q_DECL_OVERRIDE + { + return User; + } + + QSet<int> differentVerticalPositions; +}; + +class TestPixmap: public QPixmap +{ +public: + TestPixmap(int w, int h) : QPixmap(w, h), testPaintEngine(new TestPaintEngine) {} + ~TestPixmap() { delete testPaintEngine; } + + QPaintEngine *paintEngine() const + { + return testPaintEngine; + } + + TestPaintEngine *testPaintEngine; +}; + +void tst_QStaticText::multiLine() +{ + TestPixmap pixmap(100, 100); + + TestPaintEngine *paintEngine = pixmap.testPaintEngine; + + { + QPainter p(&pixmap); + QStaticText text; + text.setText(QLatin1String("line 1") + QChar(QChar::LineSeparator) + QLatin1String("line 2")); + p.drawStaticText(0, 0, text); + } + + QCOMPARE(paintEngine->differentVerticalPositions.size(), 2); +} + QTEST_MAIN(tst_QStaticText) #include "tst_qstatictext.moc" |