diff options
author | Rainer Keller <Rainer.Keller@qt.io> | 2020-01-07 09:13:21 +0100 |
---|---|---|
committer | Rainer Keller <Rainer.Keller@qt.io> | 2020-01-13 09:25:39 +0100 |
commit | 76fbe75abee7d77911467d56630176f777e8ed78 (patch) | |
tree | 3f04e6aa0203fca2166d89ef9e32eab3fe261c25 /tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp | |
parent | 18e06c37e10943f4b4f6d57b7044b9bce3a23202 (diff) |
Remove empty block at beginning of imported markdown
An empty QTextDocument already contains a block; so when the formatting
is fully determined, if the document is still empty, then instead of
inserting a new block, we can set formatting on the cursor, which
affects the pre-existing block, before inserting text. This avoids
leaving a blank line (the default block) above the inserted content.
Fixes: QTBUG-81060
Change-Id: I14e45e300a602493aa59680417d74d4c2b25862d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp')
-rw-r--r-- | tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp index 2f0b877799..39a1370f6f 100644 --- a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp +++ b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp @@ -55,12 +55,13 @@ private slots: void thematicBreaks(); void lists_data(); void lists(); + void avoidBlankLineAtBeginning_data(); + void avoidBlankLineAtBeginning(); }; void tst_QTextMarkdownImporter::headingBulletsContinuations() { const QStringList expectedBlocks = QStringList() << - "" << // we could do without this blank line before the heading, but currently it happens "heading" << "bullet 1 continuation line 1, indented via tab" << "bullet 2 continuation line 2, indented via 4 spaces" << @@ -222,5 +223,38 @@ void tst_QTextMarkdownImporter::lists() QCOMPARE(doc.toMarkdown(), rewrite); } +void tst_QTextMarkdownImporter::avoidBlankLineAtBeginning_data() +{ + QTest::addColumn<QString>("input"); + QTest::addColumn<int>("expectedNumberOfParagraphs"); + + QTest::newRow("Text block") << QString("Markdown text") << 1; + QTest::newRow("Headline") << QString("Markdown text\n============") << 1; + QTest::newRow("Code block") << QString(" Markdown text") << 2; + QTest::newRow("Unordered list") << QString("* Markdown text") << 1; + QTest::newRow("Ordered list") << QString("1. Markdown text") << 1; + QTest::newRow("Blockquote") << QString("> Markdown text") << 1; +} + +void tst_QTextMarkdownImporter::avoidBlankLineAtBeginning() // QTBUG-81060 +{ + QFETCH(QString, input); + QFETCH(int, expectedNumberOfParagraphs); + + QTextDocument doc; + QTextMarkdownImporter(QTextMarkdownImporter::DialectGitHub).import(&doc, input); + QTextFrame::iterator iterator = doc.rootFrame()->begin(); + int i = 0; + while (!iterator.atEnd()) { + QTextBlock block = iterator.currentBlock(); + // Make sure there is no empty paragraph at the beginning of the document + if (i == 0) + QVERIFY(!block.text().isEmpty()); + ++iterator; + ++i; + } + QCOMPARE(i, expectedNumberOfParagraphs); +} + QTEST_MAIN(tst_QTextMarkdownImporter) #include "tst_qtextmarkdownimporter.moc" |