diff options
author | Liang Qi <liang.qi@qt.io> | 2016-10-01 22:15:55 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-10-01 22:15:55 +0200 |
commit | 3e949b75fd298a30fa4e8b281ecf21fcb038efbe (patch) | |
tree | 592bb2d6ca846a9d3aee66bc829d21ae8ba8c056 /tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp | |
parent | 4518345b80b0ee1101ecb0e7349728abd237aa6e (diff) | |
parent | d2b4a789c39eb770068b002d2bc9ceb764dedf3d (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
mkspecs/features/mac/default_pre.prf
mkspecs/macx-ios-clang/features/resolve_config.prf
qtbase.pro
Change-Id: I65b5ebca4942a4f295bdd4ac1568e5c347333aea
Diffstat (limited to 'tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp')
-rw-r--r-- | tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp index 4d5af44ff1..0d1d0f1ae1 100644 --- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp @@ -135,6 +135,7 @@ private slots: void cursorInNonStopChars(); void nbsp(); void noModificationOfInputString(); + void superscriptCrash_qtbug53911(); private: QFont testFont; @@ -2197,5 +2198,61 @@ void tst_QTextLayout::noModificationOfInputString() } } +void tst_QTextLayout::superscriptCrash_qtbug53911() +{ + static int fontSizes = 64; + static QString layoutText = "THIS IS SOME EXAMPLE TEXT THIS IS SOME EXAMPLE TEXT"; + + QList<QTextLayout*> textLayouts; + for (int i = 0; i < fontSizes; ++i) { + for (int j = 0; j < 4; ++j) { + QTextLayout* newTextLayout = new QTextLayout(); + newTextLayout->setText(layoutText); + QList<QTextLayout::FormatRange> formatRanges; + QTextLayout::FormatRange formatRange; + + formatRange.format.setFont(QFont()); + formatRange.format.setFontPointSize(i + 5); + + switch (j) { + case 0: + formatRange.format.setFontWeight(QFont::Normal); + formatRange.format.setFontItalic(false); + break; + case 1: + formatRange.format.setFontWeight(QFont::Bold); + formatRange.format.setFontItalic(false); + break; + case 2: + formatRange.format.setFontWeight(QFont::Bold); + formatRange.format.setFontItalic(true); + break; + case 3: + formatRange.format.setFontWeight(QFont::Normal); + formatRange.format.setFontItalic(true); + break; + } + + formatRange.format.setVerticalAlignment( QTextCharFormat::AlignSuperScript); + + formatRange.start = 0; + formatRange.length = layoutText.size(); + formatRanges << formatRange; + newTextLayout->setAdditionalFormats(formatRanges); + + textLayouts.push_front(newTextLayout); + } + } + + // This loop would crash before fix for QTBUG-53911 + foreach (QTextLayout *textLayout, textLayouts) { + textLayout->beginLayout(); + while (textLayout->createLine().isValid()); + textLayout->endLayout(); + } + + qDeleteAll(textLayouts); +} + QTEST_MAIN(tst_QTextLayout) #include "tst_qtextlayout.moc" |