diff options
Diffstat (limited to 'tests/auto/gui/text')
-rw-r--r-- | tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp index e95de3df45..51e993a7d6 100644 --- a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp +++ b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp @@ -67,6 +67,7 @@ private slots: void clippedTableCell(); void floatingTablePageBreak(); void imageAtRightAlignedTab(); + void blockVisibility(); private: QTextDocument *doc; @@ -312,5 +313,46 @@ void tst_QTextDocumentLayout::imageAtRightAlignedTab() QCOMPARE(doc->idealWidth(), 300.0); } +void tst_QTextDocumentLayout::blockVisibility() +{ + QTextCursor cursor(doc); + for (int i = 0; i < 10; ++i) { + if (!doc->isEmpty()) + cursor.insertBlock(); + cursor.insertText(QString::number(i)); + } + + qreal margin = doc->documentMargin(); + QSizeF emptySize(2 * margin, 2 * margin); + QSizeF halfSize = doc->size(); + halfSize.rheight() -= 2 * margin; + halfSize.rheight() /= 2; + halfSize.rheight() += 2 * margin; + + for (int i = 0; i < 10; i += 2) { + QTextBlock block = doc->findBlockByNumber(i); + block.setVisible(false); + doc->markContentsDirty(block.position(), block.length()); + } + + QCOMPARE(doc->size(), halfSize); + + for (int i = 1; i < 10; i += 2) { + QTextBlock block = doc->findBlockByNumber(i); + block.setVisible(false); + doc->markContentsDirty(block.position(), block.length()); + } + + QCOMPARE(doc->size(), emptySize); + + for (int i = 0; i < 10; i += 2) { + QTextBlock block = doc->findBlockByNumber(i); + block.setVisible(true); + doc->markContentsDirty(block.position(), block.length()); + } + + QCOMPARE(doc->size(), halfSize); +} + QTEST_MAIN(tst_QTextDocumentLayout) #include "tst_qtextdocumentlayout.moc" |