aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicktextedit
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-03-06 13:37:41 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-10 15:11:51 +0100
commitafc10fe7bbe683d4107cc6439c783b4604320414 (patch)
tree2222bb110e0d12023609e7660e6291a8dae6bb9a /tests/auto/quick/qquicktextedit
parent50f8133a1a1eb434abafcca5335be706d4f0b694 (diff)
Fix TextEdit::lineCount to update as appropriate
The total line count needs to be updated when geometry, document size or wrapping mode changes. Task-number: QTBUG-37263 Change-Id: If58a2f77022475e8bcb7cca0f2a091ee837b39a5 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Diffstat (limited to 'tests/auto/quick/qquicktextedit')
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index e6a83b3338..83fa496edd 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -108,6 +108,8 @@ private slots:
void width();
void wrap();
void textFormat();
+ void lineCount_data();
+ void lineCount();
// ### these tests may be trivial
void hAlign();
@@ -613,6 +615,55 @@ void tst_qquicktextedit::textFormat()
}
}
+static int calcLineCount(QTextDocument* doc)
+{
+ int subLines = 0;
+ for (QTextBlock it = doc->begin(); it != doc->end(); it = it.next()) {
+ QTextLayout *layout = it.layout();
+ if (!layout)
+ continue;
+ subLines += layout->lineCount()-1;
+ }
+ return doc->lineCount() + subLines;
+}
+
+void tst_qquicktextedit::lineCount_data()
+{
+ QTest::addColumn<QStringList>("texts");
+ QTest::newRow("plaintext") << standard;
+ QTest::newRow("richtext") << richText;
+}
+
+void tst_qquicktextedit::lineCount()
+{
+ QFETCH(QStringList, texts);
+
+ foreach (const QString& text, texts) {
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0\nTextEdit { }", QUrl());
+
+ QQuickTextEdit *textedit = qobject_cast<QQuickTextEdit*>(component.create());
+ QVERIFY(textedit);
+
+ QTextDocument *doc = QQuickTextEditPrivate::get(textedit)->document;
+ QVERIFY(doc);
+
+ textedit->setText(text);
+
+ textedit->setWidth(100.0);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWrapMode(QQuickTextEdit::Wrap);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWidth(50.0);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+
+ textedit->setWrapMode(QQuickTextEdit::NoWrap);
+ QCOMPARE(textedit->lineCount(), calcLineCount(doc));
+ }
+}
+
//the alignment tests may be trivial o.oa
void tst_qquicktextedit::hAlign()
{