Fixing end-of-line detection in the wordwrap finder.
[quassel.git] / src / qtui / chatlinemodelitem.cpp
index aebde9d..73b1533 100644 (file)
@@ -73,7 +73,8 @@ void ChatLineModelItem::computeWrapList() {
 
   QList<ChatLineModel::Word> wplist;  // use a temp list which we'll later copy into a QVector for efficiency
   QTextBoundaryFinder finder(QTextBoundaryFinder::Word, _contents.plainText);
 
   QList<ChatLineModel::Word> wplist;  // use a temp list which we'll later copy into a QVector for efficiency
   QTextBoundaryFinder finder(QTextBoundaryFinder::Word, _contents.plainText);
-  int idx, oldidx;
+  int idx;
+  int oldidx = 0;
   bool wordStart = false; bool wordEnd = false;
   Mode mode = SearchEnd;
   ChatLineModel::Word word;
   bool wordStart = false; bool wordEnd = false;
   Mode mode = SearchEnd;
   ChatLineModel::Word word;
@@ -93,13 +94,19 @@ void ChatLineModelItem::computeWrapList() {
 
   do {
     idx = finder.toNextBoundary();
 
   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(mode == SearchEnd || (!wordStart && wordEnd)) {
       if(wordStart || !wordEnd) continue;
       oldidx = idx;
       mode = SearchStart;
       if(wordStart || !wordEnd) continue;
       oldidx = idx;
       mode = SearchStart;