QTBF: fix the mandatory line breaks not being set in some cases
authorKonstantin Ritt <ritt.ks@gmail.com>
Tue, 29 May 2012 02:38:28 +0000 (05:38 +0300)
committerQt by Nokia <qt-info@nokia.com>
Tue, 29 May 2012 23:54:45 +0000 (01:54 +0200)
e.g. for the text "Aaa bbb ccc.\r\nDdd eee fff." the \r\n wasn't treated
as a hard line break or as a line break opportunity, ever.
Quite ancient bug...

Change-Id: I8d8497c55a3a4d51c27de99ccfe1e31f3bf4de77
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/corelib/tools/qunicodetools.cpp

index 0b78401..e503ecd 100644 (file)
@@ -188,10 +188,11 @@ static void calcGraphemeAndLineBreaks(const ushort *string, quint32 len, HB_Char
             attributes[i].whiteSpace = true;
 
         HB_LineBreakType lineBreakType = HB_NoBreak;
-        if (cls >= QUnicodeTables::LineBreak_LF) {
-            lineBreakType = HB_ForcedBreak;
-        } else if (cls == QUnicodeTables::LineBreak_CR) {
-            lineBreakType = (ncls == QUnicodeTables::LineBreak_LF) ? HB_NoBreak : HB_ForcedBreak;
+
+        if (cls >= QUnicodeTables::LineBreak_CR) {
+            if (cls > QUnicodeTables::LineBreak_CR || ncls != QUnicodeTables::LineBreak_LF)
+                lineBreakType = HB_ForcedBreak;
+            goto next;
         }
 
         if (ncls == QUnicodeTables::LineBreak_SP)