From f4afe4934819a7f0fb9754b9bb08fb1acb818058 Mon Sep 17 00:00:00 2001 From: Shinichi Okada Date: Tue, 17 Nov 2020 14:15:50 +0900 Subject: [PATCH 08/28] 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 (cherry picked from commit ae1b9c6d94001411efeef600e22638906e0fa990) Reviewed-by: Qt Cherry-pick Bot --- src/quick/items/qquicktext.cpp | 2 + .../auto/quick/qquicktext/tst_qquicktext.cpp | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+) 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 layoutWindow(createView(testFile("lineLayoutHAlign.qml"))); + QQuickText *lineLaidOut = layoutWindow->rootObject()->findChild("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() -- 2.31.1