diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2014-03-06 13:37:41 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-10 15:11:51 +0100 |
commit | afc10fe7bbe683d4107cc6439c783b4604320414 (patch) | |
tree | 2222bb110e0d12023609e7660e6291a8dae6bb9a /tests/auto/quick/qquicktextedit | |
parent | 50f8133a1a1eb434abafcca5335be706d4f0b694 (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.cpp | 51 |
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() { |