summaryrefslogtreecommitdiff
path: root/indra/llui/lltextbase.cpp
diff options
context:
space:
mode:
authorTofu Linden <tofu.linden@lindenlab.com>2009-11-25 10:49:49 +0000
committerTofu Linden <tofu.linden@lindenlab.com>2009-11-25 10:49:49 +0000
commit664b848bac30a7f3f1177a683e0913c9457dc041 (patch)
treeb284602f6911e31d5ef687e1c06b343ef83627e1 /indra/llui/lltextbase.cpp
parent6f4099e413d41ba56a5a339122050122363ca952 (diff)
parent41eb231e6a41da13549e5cbd4cfe6f5efeab74b1 (diff)
merge from trunk.
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