From 08a1867723b5224adafaa61c160b2966c10e0231 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 27 Mar 2012 01:40:56 +0300 Subject: Fix chat item links. Some times links worked incorrectly. --- src/gui/widgets/browserbox.cpp | 32 +++++++++++++++++++++++++++----- 1 file 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; } } } -- cgit v1.2.3-70-g09d2