aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktext.cpp6
-rw-r--r--tests/auto/qtquick2/qquicktext/data/multilineelide.qml2
-rw-r--r--tests/auto/qtquick2/qquicktext/tst_qquicktext.cpp6
3 files changed, 11 insertions, 3 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index 44735c1895..28491d8f75 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -666,6 +666,7 @@ QRect QQuickTextPrivate::setupTextLayout(qreal *const naturalWidth)
}
const int lineWidth = q->widthValid() ? q->width() : INT_MAX;
+ const qreal maxHeight = q->heightValid() ? q->height() : FLT_MAX;
const bool customLayout = isLineLaidOutConnected();
const bool wasTruncated = truncated;
@@ -715,6 +716,7 @@ QRect QQuickTextPrivate::setupTextLayout(qreal *const naturalWidth)
}
layout.beginLayout();
+
bool wrapped = false;
bool truncateHeight = false;
truncated = false;
@@ -735,7 +737,7 @@ QRect QQuickTextPrivate::setupTextLayout(qreal *const naturalWidth)
// Elide the previous line if the accumulated height of the text exceeds the height
// of the element.
- if (multilineElide && height > q->height() && visibleCount > 1) {
+ if (multilineElide && height > maxHeight && visibleCount > 1) {
elide = true;
if (eos != -1) // There's an abbreviated string available, skip the rest as it's
break; // all going to be discarded.
@@ -873,7 +875,7 @@ QRect QQuickTextPrivate::setupTextLayout(qreal *const naturalWidth)
}
if (verticalFit) {
- if (truncateHeight || (q->heightValid() && unelidedRect.height() > q->height())) {
+ if (truncateHeight || unelidedRect.height() > maxHeight) {
largeFont = scaledFontSize - 1;
scaledFontSize = (smallFont + largeFont + 1) / 2;
if (smallFont > largeFont)
diff --git a/tests/auto/qtquick2/qquicktext/data/multilineelide.qml b/tests/auto/qtquick2/qquicktext/data/multilineelide.qml
index f3bb65775b..ffca0d638a 100644
--- a/tests/auto/qtquick2/qquicktext/data/multilineelide.qml
+++ b/tests/auto/qtquick2/qquicktext/data/multilineelide.qml
@@ -1,7 +1,7 @@
import QtQuick 2.0
Text {
- width: 200; height: 200
+ width: 200
wrapMode: Text.WordWrap
elide: Text.ElideRight
maximumLineCount: 3
diff --git a/tests/auto/qtquick2/qquicktext/tst_qquicktext.cpp b/tests/auto/qtquick2/qquicktext/tst_qquicktext.cpp
index 86d502f07e..c28de8b53c 100644
--- a/tests/auto/qtquick2/qquicktext/tst_qquicktext.cpp
+++ b/tests/auto/qtquick2/qquicktext/tst_qquicktext.cpp
@@ -471,6 +471,12 @@ void tst_qquicktext::multilineElide()
qreal lineHeight = myText->contentHeight() / 3.;
+ // Set a valid height greater than the truncated content height and ensure the line count is
+ // unchanged.
+ myText->setHeight(200);
+ QCOMPARE(myText->lineCount(), 3);
+ QCOMPARE(myText->truncated(), true);
+
// reduce size and ensure fewer lines are drawn
myText->setHeight(lineHeight * 2);
QCOMPARE(myText->lineCount(), 2);