diff options
Diffstat (limited to 'tests/auto/quick/qquicktext/tst_qquicktext.cpp')
-rw-r--r-- | tests/auto/quick/qquicktext/tst_qquicktext.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index 28eed57a95..7d24de6ccd 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -117,6 +117,7 @@ private slots: void boundingRect(); void clipRect(); void lineLaidOut(); + void lineLaidOutRelayout(); void imgTagsBaseUrl_data(); void imgTagsBaseUrl(); @@ -1898,6 +1899,42 @@ void tst_qquicktext::lineLaidOut() delete canvas; } +void tst_qquicktext::lineLaidOutRelayout() +{ + QQuickView *canvas = createView(testFile("lineLayoutRelayout.qml")); + + canvas->show(); + canvas->requestActivateWindow(); + QTest::qWaitForWindowShown(canvas); + + QQuickText *myText = canvas->rootObject()->findChild<QQuickText*>("myText"); + QVERIFY(myText != 0); + + QQuickTextPrivate *textPrivate = QQuickTextPrivate::get(myText); + QVERIFY(textPrivate != 0); + + QVERIFY(!textPrivate->extra.isAllocated()); + +#if defined(Q_OS_MAC) + QVERIFY(myText->lineCount() == textPrivate->linesRects.count()); +#endif + + qreal maxH = 0; + for (int i = 0; i < textPrivate->layout.lineCount(); ++i) { + QRectF r = textPrivate->layout.lineAt(i).rect(); + + if (r.x() == 0) { + QCOMPARE(r.y(), i * r.height()); + maxH = qMax(maxH, r.y() + r.height()); + } else { + QCOMPARE(r.x(), myText->width() / 2); + QCOMPARE(r.y(), (i * r.height()) - maxH); + } + } + + delete canvas; +} + void tst_qquicktext::imgTagsBaseUrl_data() { QTest::addColumn<QUrl>("src"); |