aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShinichi Okada <shinichi.okada@qt.io>2020-11-17 14:15:50 +0900
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-11-20 11:04:42 +0000
commitf4afe4934819a7f0fb9754b9bb08fb1acb818058 (patch)
tree4a2ee6af7048d5db369337095a8fbea1c49bf2c1
parente749605ecbe76c392552d0e3a75f47b31bed9ba1 (diff)
QML Text doesn't reset lineCount when text is empty
lineCount is not reset when replacing a multi-line QML Text 'text' property with an "" empty string. Also, the lineCountChanged signal is not emitted Task-number: QTBUG-84458 Change-Id: Ic3c02e6a90e6675eadbaafc6af6ab0356ee98123 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit ae1b9c6d94001411efeef600e22638906e0fa990) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quick/items/qquicktext.cpp2
-rw-r--r--tests/auto/quick/qquicktext/tst_qquicktext.cpp37
2 files changed, 39 insertions, 0 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
index 90469ee82b..581ab9f76a 100644
--- a/src/quick/items/qquicktext.cpp
+++ b/src/quick/items/qquicktext.cpp
@@ -398,6 +398,8 @@ void QQuickTextPrivate::updateSize()
layedOutTextRect = QRectF(0, 0, 0, fontHeight);
advance = QSizeF();
signalSizeChange(previousSize);
+ lineCount = 1;
+ emit q->lineCountChanged();
updateType = UpdatePaintNode;
q->update();
return;
diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
index 42fdbea58d..308c6b5091 100644
--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp
+++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
@@ -2243,6 +2243,43 @@ void tst_qquicktext::lineCount()
QCOMPARE(myText->lineCount(), 2);
QCOMPARE(myText->truncated(), true);
QCOMPARE(myText->maximumLineCount(), 2);
+
+ // QTBUG-84458
+ myText->resetMaximumLineCount();
+ myText->setText("qqqqq\nqqqqq");
+ QCOMPARE(myText->lineCount(), 2);
+ myText->setText("qqqqq\nqqqqq\nqqqqq");
+ QCOMPARE(myText->lineCount(), 3);
+ myText->setText("");
+ QCOMPARE(myText->lineCount(), 1);
+
+ myText->setText("qqqqq\nqqqqq\nqqqqq");
+ QCOMPARE(myText->lineCount(), 3);
+ myText->setFontSizeMode(QQuickText::HorizontalFit);
+ myText->setText("");
+ QCOMPARE(myText->lineCount(), 1);
+
+ myText->setText("qqqqq\nqqqqq\nqqqqq");
+ QCOMPARE(myText->lineCount(), 3);
+ myText->setFontSizeMode(QQuickText::VerticalFit);
+ myText->setText("");
+ QCOMPARE(myText->lineCount(), 1);
+
+ myText->setText("qqqqq\nqqqqq\nqqqqq");
+ QCOMPARE(myText->lineCount(), 3);
+ myText->setFontSizeMode(QQuickText::Fit);
+ myText->setText("");
+ QCOMPARE(myText->lineCount(), 1);
+
+ QScopedPointer<QQuickView> layoutWindow(createView(testFile("lineLayoutHAlign.qml")));
+ QQuickText *lineLaidOut = layoutWindow->rootObject()->findChild<QQuickText*>("myText");
+ QVERIFY(lineLaidOut != nullptr);
+
+ lineLaidOut->setText("qqqqq\nqqqqq\nqqqqq");
+ QCOMPARE(lineLaidOut->lineCount(), 3);
+ lineLaidOut->setFontSizeMode(QQuickText::FixedSize);
+ lineLaidOut->setText("");
+ QCOMPARE(lineLaidOut->lineCount(), 1);
}
void tst_qquicktext::lineHeight()