summaryrefslogtreecommitdiff
path: root/indra/llui/lltextbase.cpp
diff options
context:
space:
mode:
authorLoren Shih <seraph@lindenlab.com>2009-11-24 22:11:24 -0500
committerLoren Shih <seraph@lindenlab.com>2009-11-24 22:11:24 -0500
commitccf6cb3f9ba387117720d700b73ac8e05dbf1f75 (patch)
tree71163fde19389893c8951ebb723ddf9379318518 /indra/llui/lltextbase.cpp
parent2369fa96c24bafbd032c85b58767502cfd37ebaf (diff)
parent5b5354c933aa7b1ceeb307853c24fba28d4e31bf (diff)
viewer-2.0 automated merge
--HG-- branch : avatar-pipeline
Diffstat (limited to 'indra/llui/lltextbase.cpp')
-rw-r--r--indra/llui/lltextbase.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index e210667764..7bf10d774c 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -60,6 +60,11 @@ LLTextBase::line_info::line_info(S32 index_start, S32 index_end, LLRect rect, S3
bool LLTextBase::compare_segment_end::operator()(const LLTextSegmentPtr& a, const LLTextSegmentPtr& b) const
{
+ // sort empty spans (e.g. 11-11) after previous non-empty spans (e.g. 5-11)
+ if (a->getEnd() == b->getEnd())
+ {
+ return a->getStart() < b->getStart();
+ }
return a->getEnd() < b->getEnd();
}
@@ -2060,16 +2065,16 @@ void LLTextBase::updateRects()
mContentsRect.unionWith(line_iter->mRect);
}
- mContentsRect.mLeft = 0;
+ S32 delta_pos_x = -mContentsRect.mLeft;
mContentsRect.mTop += mVPad;
S32 delta_pos = -mContentsRect.mBottom;
// move line segments to fit new document rect
for (line_list_t::iterator it = mLineInfoList.begin(); it != mLineInfoList.end(); ++it)
{
- it->mRect.translate(0, delta_pos);
+ it->mRect.translate(delta_pos_x, delta_pos);
}
- mContentsRect.translate(0, delta_pos);
+ mContentsRect.translate(delta_pos_x, delta_pos);
}
// update document container dimensions according to text contents