aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktext.cpp2
-rw-r--r--tests/auto/quick/qquicktext/data/growFromZeroWidth.qml8
-rw-r--r--tests/auto/quick/qquicktext/tst_qquicktext.cpp19
3 files changed, 28 insertions, 1 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index be86b2976b..bff38879cf 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -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
index 0000000000..a264191e45
--- /dev/null
+++ b/tests/auto/quick/qquicktext/data/growFromZeroWidth.qml
@@ -0,0 +1,8 @@
+import QtQuick 2.0
+
+Text {
+ width: 0
+ wrapMode: Text.Wrap
+ horizontalAlignment: Text.AlignHCenter
+ text: "AA\nBBBBBBB\nCCCCCCCCCCCCCCCC"
+}
diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
index 2e5212d5d8..7453268f63 100644
--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp
+++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
@@ -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"