diff options
| author | Pierre Rossi <pierre.rossi@gmail.com> | 2010-10-20 11:54:48 +0200 | 
|---|---|---|
| committer | Pierre Rossi <pierre.rossi@gmail.com> | 2010-10-20 16:36:41 +0200 | 
| commit | 1e461a5c06bcbcaa610858d4b7db7e559b96ae80 (patch) | |
| tree | 22c98700059cd0a008fb4a21a2d50c1a32121d14 /src/urlbar | |
| parent | Minor clean-up to the UrlPanel class (diff) | |
| download | rekonq-1e461a5c06bcbcaa610858d4b7db7e559b96ae80.tar.xz | |
Fix highlighting of the last character
Thanks to pano for noticing the bad behavior.
AutoTest updated with the testcase.
Reviewed-By: Benjamin Poulain
Diffstat (limited to 'src/urlbar')
| -rw-r--r-- | src/urlbar/listitem.cpp | 25 | 
1 files changed, 14 insertions, 11 deletions
| diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp index 8b908149..df9ef286 100644 --- a/src/urlbar/listitem.cpp +++ b/src/urlbar/listitem.cpp @@ -211,28 +211,31 @@ static QString highlightWordsInText(const QString &text, const QStringList &word      foreach (const QString &wordToPointOut, words) {          int index = ret.indexOf(wordToPointOut, 0, Qt::CaseInsensitive);          while(index > -1) { -            boldSections.fill(true,index + 1, index + wordToPointOut.size() + 1); +            boldSections.fill(true, index, index + wordToPointOut.size());              index = ret.indexOf(wordToPointOut, index + wordToPointOut.size(), Qt::CaseInsensitive);          }      }      int numSections = 0; -    bool bold = false; -    for(int i=0; i < boldSections.size() - 1; ++i ) { -        if (boldSections.testBit(i) && (i == boldSections.size() || !boldSections.testBit(i+1))) -            numSections++; +    for (int i = 0; i < boldSections.size() - 1; ++i){ +        if (boldSections.testBit(i) && !boldSections.testBit(i + 1)) +            ++numSections;      } +    if (boldSections.testBit(boldSections.size() - 1)) //last char was still part of a bold section +        ++numSections;      const int tagLength = 7; // length of "<b>" and "</b>" we're going to add for each bold section.      ret.reserve(ret.size() + numSections * tagLength); -    bold = false; -    for (int i = boldSections.size() - 1; i >= 0; --i) { -        if (!bold && boldSections.testBit(i)) { -            ret.insert(i, QL1S("</b>")); +    bool bold = false; +    for (int i = boldSections.size() - 1; i >= 0; --i){ +        if (!bold && boldSections.testBit(i)){ +            ret.insert(i + 1, QL1S("</b>"));              bold = true; -        } else if (bold && !boldSections.testBit(i)) { -            ret.insert(i, QL1S("<b>")); +        } else if (bold && !boldSections.testBit(i)){ +            ret.insert(i + 1, QL1S("<b>"));              bold = false;          }      } +    if (bold) +        ret.insert(0, QL1S("<b>"));      return ret;  } | 
