diff options
Diffstat (limited to 'src/gui/widgets/browserbox.cpp')
-rw-r--r-- | src/gui/widgets/browserbox.cpp | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp index d5b088369..5ef7adfcd 100644 --- a/src/gui/widgets/browserbox.cpp +++ b/src/gui/widgets/browserbox.cpp @@ -175,13 +175,35 @@ void BrowserBox::addRow(const std::string &row, bool atTop) while (mTextRows.size() > mMaxRows) { mTextRows.pop_front(); - for (unsigned int i = 0; i < mLinks.size(); i++) + + int yStart = 0; + + LinePartIterator i = mLineParts.begin(); + if (i != mLineParts.end()) { - mLinks[i].y1 -= font->getHeight(); - mLinks[i].y2 -= font->getHeight(); + ++ i; + for (; i != mLineParts.end(); ++ i) + { + const LinePart &part = *i; + if (!part.mX) + { + yStart = part.mY; + break; + } + } + } - if (mLinks[i].y1 < 0) - mLinks.erase(mLinks.begin() + i); + LinkIterator it = mLinks.begin(); + LinkIterator it_end = mLinks.end(); + while (it != it_end) + { + (*it).y1 -= yStart; + (*it).y2 -= yStart; + + if ((*it).y1 < 0) + it = mLinks.erase(it); + else + ++ it; } } } |