84 lines
3.1 KiB
Diff
84 lines
3.1 KiB
Diff
From f4afe4934819a7f0fb9754b9bb08fb1acb818058 Mon Sep 17 00:00:00 2001
|
|
From: Shinichi Okada <shinichi.okada@qt.io>
|
|
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 <fabian.kosmale@qt.io>
|
|
(cherry picked from commit ae1b9c6d94001411efeef600e22638906e0fa990)
|
|
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
---
|
|
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<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()
|
|
--
|
|
2.31.1
|
|
|