Fix Text wrapping when growing from 0 width.
authorMichael Brasser <michael.brasser@live.com>
Mon, 2 Feb 2015 17:23:31 +0000 (11:23 -0600)
committerMichael Brasser <michael.brasser@live.com>
Tue, 3 Feb 2015 14:46:57 +0000 (14:46 +0000)
The fix for QTBUG-30896 caused a regression in the test case. Now check
both width and implicit width validity before resetting widthExceeded.

Change-Id: I4aba2aad299746906cfe20e288fa60cfe2acc64f
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
src/quick/items/qquicktext.cpp
tests/auto/quick/qquicktext/data/growFromZeroWidth.qml [new file with mode: 0644]
tests/auto/quick/qquicktext/tst_qquicktext.cpp

index be86b29..bff3887 100644 (file)
@@ -955,7 +955,7 @@ QRectF QQuickTextPrivate::setupTextLayout(qreal *const baseline)
 
             // If the horizontal alignment is not left and the width was not valid we need to relayout
             // now that we know the maximum line width.
-            if (!implicitWidthValid && unwrappedLineCount > 1 && q->effectiveHAlign() != QQuickText::AlignLeft) {
+            if (!q->widthValid() && !implicitWidthValid && unwrappedLineCount > 1 && q->effectiveHAlign() != QQuickText::AlignLeft) {
                 widthExceeded = false;
                 heightExceeded = false;
                 continue;
diff --git a/tests/auto/quick/qquicktext/data/growFromZeroWidth.qml b/tests/auto/quick/qquicktext/data/growFromZeroWidth.qml
new file mode 100644 (file)
index 0000000..a264191
--- /dev/null
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Text {
+    width: 0
+    wrapMode: Text.Wrap
+    horizontalAlignment: Text.AlignHCenter
+    text: "AA\nBBBBBBB\nCCCCCCCCCCCCCCCC"
+}
index 2e5212d..7453268 100644 (file)
@@ -148,6 +148,8 @@ private slots:
 
     void hover();
 
+    void growFromZeroWidth();
+
 private:
     QStringList standard;
     QStringList richText;
@@ -3881,6 +3883,23 @@ void tst_qquicktext::hover()
     QVERIFY(mouseArea->property("wasHovered").toBool());
 }
 
+void tst_qquicktext::growFromZeroWidth()
+{
+    QQmlComponent component(&engine, testFile("growFromZeroWidth.qml"));
+
+    QScopedPointer<QObject> object(component.create());
+
+    QQuickText *text = qobject_cast<QQuickText *>(object.data());
+    QVERIFY(text);
+
+    QCOMPARE(text->lineCount(), 3);
+
+    text->setWidth(80);
+
+    // the new width should force our contents to wrap
+    QVERIFY(text->lineCount() > 3);
+}
+
 QTEST_MAIN(tst_qquicktext)
 
 #include "tst_qquicktext.moc"