diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6c290e209a9..41d12a65d66 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -110,7 +110,7 @@ private: QScriptItemArray::Iterator iter = m_items.end(); do { iter--; - if (iter->analysis.flags < QScriptAnalysis::TabOrObject) + if (iter->analysis.flags < QScriptAnalysis::LineOrParagraphSeparator) iter->analysis.flags = flags; } while (iter->position > start); } diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp index 60485b30a5c..21098f40366 100644 --- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp @@ -112,6 +112,7 @@ private slots: void tabsForRtl(); void tabHeight(); void capitalization_allUpperCase(); + void capitalization_allUpperCase_newline(); void capitalization_allLowerCase(); void capitalization_smallCaps(); void capitalization_capitalize(); @@ -1670,6 +1671,28 @@ void tst_QTextLayout::capitalization_allUpperCase() QVERIFY(engine->layoutData->items.at(0).analysis.flags == QScriptAnalysis::Uppercase); } +void tst_QTextLayout::capitalization_allUpperCase_newline() +{ + QFont font(testFont); + font.setCapitalization(QFont::AllUppercase); + + QString tmp = "hello\nworld!"; + tmp.replace(QLatin1Char('\n'), QChar::LineSeparator); + + QTextLayout layout(tmp, font); + layout.setCacheEnabled(true); + layout.beginLayout(); + layout.createLine(); + layout.endLayout(); + + QTextEngine *engine = layout.engine(); + engine->itemize(); + QCOMPARE(engine->layoutData->items.count(), 3); + QVERIFY(engine->layoutData->items.at(0).analysis.flags == QScriptAnalysis::Uppercase); + QVERIFY(engine->layoutData->items.at(1).analysis.flags == QScriptAnalysis::LineOrParagraphSeparator); + QVERIFY(engine->layoutData->items.at(2).analysis.flags == QScriptAnalysis::Uppercase); +} + void tst_QTextLayout::capitalization_allLowerCase() { QFont font(testFont);