diff options
author | Yann Bodson <yann.bodson@nokia.com> | 2012-06-25 13:22:12 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-03 01:08:37 +0200 |
commit | 2ff6086e0655449ee0c7ca0e4e91ee5bda7ca7bf (patch) | |
tree | 18b06e4d7772a8c6097e30f09dc37d818f1e9ea3 | |
parent | f9c73f0785cd19ddd535778270446b7747f217d2 (diff) |
Fix capitalization with newline bug
We only want to change the capitalization if the QScriptAnalysis flag
was Lowercase, Uppercase or SmallCaps.
Task-number: QTBUG-17485
Change-Id: Icbecb09b06a9153866ae81d592b3f6779c2dafb5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
-rw-r--r-- | src/gui/text/qtextengine.cpp | 2 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 6c290e209a..41d12a65d6 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 60485b30a5..21098f4036 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); |