diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index d62bf8efa12e578b90263f24964c7a09899d0985..bde9637ea03148ff25f0aaaf4be9b08c823cc6f4 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -669,8 +669,9 @@ void QQuickTextPrivate::setupCustomLineGeometry(QTextLine &line, qreal &height, textLine->setHeight(0); textLine->setLineOffset(lineOffset); - // use the text item's width by default if it has one and wrap is on - if (q->widthValid() && q->wrapMode() != QQuickText::NoWrap) + // use the text item's width by default if it has one and wrap is on or text must be aligned + if (q->widthValid() && (q->wrapMode() != QQuickText::NoWrap || + q->effectiveHAlign() != QQuickText::AlignLeft)) textLine->setWidth(q->width()); else textLine->setWidth(INT_MAX); diff --git a/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml b/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml new file mode 100644 index 0000000000000000000000000000000000000000..6349f7a644911fc2b80507db3d196469e1fa2f03 --- /dev/null +++ b/tests/auto/quick/qquicktext/data/lineLayoutHAlign.qml @@ -0,0 +1,20 @@ +import QtQuick 2.0 + +Item { + id: main + width: 200; height: 200 + + Text { + id: myText + objectName: "myText" + width: parent.width + font.family: "__Qt__Box__Engine__" + font.pixelSize: 14 + horizontalAlignment: Text.AlignHCenter + text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + onLineLaidOut: { + // do nothing + } + } +} diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index 78e03be9c2c38c2d8993cd6c9b8a6368e9e2ea92..dfbd190a6565e8377980c624478dbcec838b7b7f 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -126,6 +126,7 @@ private slots: void clipRect(); void lineLaidOut(); void lineLaidOutRelayout(); + void lineLaidOutHAlign(); void imgTagsBaseUrl_data(); void imgTagsBaseUrl(); @@ -2630,6 +2631,23 @@ void tst_qquicktext::lineLaidOutRelayout() delete window; } +void tst_qquicktext::lineLaidOutHAlign() +{ + QQuickView *window = createView(testFile("lineLayoutHAlign.qml")); + + QQuickText *myText = window->rootObject()->findChild<QQuickText*>("myText"); + QVERIFY(myText != 0); + + QQuickTextPrivate *textPrivate = QQuickTextPrivate::get(myText); + QVERIFY(textPrivate != 0); + + QCOMPARE(textPrivate->layout.lineCount(), 1); + + QVERIFY(textPrivate->layout.lineAt(0).naturalTextRect().x() < 0.0); + + delete window; +} + void tst_qquicktext::imgTagsBaseUrl_data() { QTest::addColumn<QUrl>("src");