diff options
author | David Faure <david.faure@kdab.com> | 2022-05-25 22:07:36 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2022-05-26 16:58:42 +0200 |
commit | 09c7457f4ab8021e7637e60e6c3d1f644639aec1 (patch) | |
tree | a616cc26d117d741d593542d7dc41a67a79de96f /tests/auto/gui | |
parent | 2996ca031efcd97ef9866186ae53e96ed75c9fbf (diff) |
QTextDocument: add setLayoutEnabled()
This allows to set up everything first - without paying for the layout
calculation at every step - and only then trigger the layout once.
Results:
0.065 msecs to create a QGraphicsTextItem with some text (layouted)
0.036 msecs to set everything up in a QGraphicsTextItem with 0 width
Change-Id: I138bd1d58941d029bc0a36d2730216778f1fbd97
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests/auto/gui')
-rw-r--r-- | tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp index 5344e6881c..ad9e1965b6 100644 --- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp @@ -180,6 +180,8 @@ private slots: void insertHtmlWithComments_data(); void insertHtmlWithComments(); + void delayedLayout(); + private: void backgroundImage_checkExpectedHtml(const QTextDocument &doc); void buildRegExpData(); @@ -3931,5 +3933,24 @@ void tst_QTextDocument::insertHtmlWithComments() QCOMPARE(blockContent, expectedBlocks); } +void tst_QTextDocument::delayedLayout() +{ + QTextDocument doc; + doc.setHtml("<html>Foobar</html>"); + QCOMPARE(doc.blockCount(), 1); + + doc.setLayoutEnabled(false); + + // Force creation of a layout + QVERIFY(doc.documentLayout()); + + QTextBlock block = doc.begin(); + QTextLayout *layout = block.layout(); + QCOMPARE(layout->lineCount(), 0); // layout didn't happen yet + + doc.setLayoutEnabled(true); + QCOMPARE(layout->lineCount(), 1); // layout happened +} + QTEST_MAIN(tst_QTextDocument) #include "tst_qtextdocument.moc" |