fixing empty chatlines on mac os (hopefully on windows too). This looks very much...
[quassel.git] / src / qtui / chatlinemodelitem.cpp
index f79b4fc..84832cd 100644 (file)
@@ -94,11 +94,17 @@ void ChatLineModelItem::computeWrapList() {
 
   do {
     idx = finder.toNextBoundary();
-    if(idx < 0) idx = _contents.plainText.length();
-    wordStart = finder.boundaryReasons().testFlag(QTextBoundaryFinder::StartWord);
-    wordEnd = finder.boundaryReasons().testFlag(QTextBoundaryFinder::EndWord);
+    if(idx < 0) {
+      idx = _contents.plainText.length();
+      wordStart = false;
+      wordEnd = false;
+      mode = SearchStart;
+    } else {
+      wordStart = finder.boundaryReasons().testFlag(QTextBoundaryFinder::StartWord);
+      wordEnd = finder.boundaryReasons().testFlag(QTextBoundaryFinder::EndWord);
+    }
 
-    //qDebug() << wordStart << wordEnd << _contents.plainText.left(idx) << _contents.plainText.mid(idx);
+    //if(flg) qDebug() << idx << mode << wordStart << wordEnd << _contents.plainText.left(idx) << _contents.plainText.mid(idx);
 
     if(mode == SearchEnd || (!wordStart && wordEnd)) {
       if(wordStart || !wordEnd) continue;
@@ -117,7 +123,9 @@ void ChatLineModelItem::computeWrapList() {
       word.start = idx;
       mode = SearchEnd;
     }
-  } while(finder.isAtBoundary());
+    // the part " || (finder.position() == _contents.plainText.length())" shouldn't be necessary
+    // but in rare and indeterministic cases Qt states that the end of the text is not a boundary o_O
+  } while(finder.isAtBoundary() || (finder.position() == _contents.plainText.length()));
 
   // A QVector needs less space than a QList
   _wrapList.resize(wplist.count());