summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2012-06-25 13:22:12 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-03 01:08:37 +0200
commit2ff6086e0655449ee0c7ca0e4e91ee5bda7ca7bf (patch)
tree18b06e4d7772a8c6097e30f09dc37d818f1e9ea3
parentf9c73f0785cd19ddd535778270446b7747f217d2 (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.cpp2
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp23
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);