diff options
author | Richard Nelson <richard@lindenlab.com> | 2009-10-14 20:16:18 +0000 |
---|---|---|
committer | Richard Nelson <richard@lindenlab.com> | 2009-10-14 20:16:18 +0000 |
commit | fd312d1929de708e5765cf1b3815cb61752fc355 (patch) | |
tree | cc4dbf334b89970f1499acfaee3571b7cd529374 /indra/llui | |
parent | 7197e1aa962be6174a219027ced4dec72b5553a2 (diff) |
improved metrics for llfontgl::getWidth (use greater of character width/xadvance)
llfontgl::Addchar now called consistently when requesting font metrics
no longer possible to have font glyph info without rendered font
EXT-1294 - LLExpandableTextBox: wrong ellipses
reviewed by James and Mani
Diffstat (limited to 'indra/llui')
-rw-r--r-- | indra/llui/lltextbase.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 97a2c70fe8..3c5213a0b3 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1106,12 +1106,17 @@ void LLTextBase::reflow(S32 start_index) S32 segment_width = segment->getWidth(seg_offset, character_count); remaining_pixels -= segment_width; - S32 text_left = getLeftOffset(text_width - remaining_pixels); seg_offset += character_count; S32 last_segment_char_on_line = segment->getStart() + seg_offset; + S32 text_left = getLeftOffset(text_width - remaining_pixels); + LLRect line_rect(text_left, + cur_top, + text_left + (text_width - remaining_pixels), + cur_top - line_height); + // if we didn't finish the current segment... if (last_segment_char_on_line < segment->getEnd()) { @@ -1129,10 +1134,7 @@ void LLTextBase::reflow(S32 start_index) mLineInfoList.push_back(line_info( line_start_index, last_segment_char_on_line, - LLRect(text_left, - cur_top, - text_left + (text_width - remaining_pixels), - cur_top - line_height), + line_rect, line_count)); line_start_index = segment->getStart() + seg_offset; @@ -1147,15 +1149,12 @@ void LLTextBase::reflow(S32 start_index) mLineInfoList.push_back(line_info( line_start_index, last_segment_char_on_line, - LLRect(text_left, - cur_top, - text_left + (text_width - remaining_pixels), - cur_top - line_height), + line_rect, line_count)); cur_top -= llround((F32)line_height * mLineSpacingMult) + mLineSpacingPixels; break; } - // finished a segment and there are segments remaining on this line + // ...or finished a segment and there are segments remaining on this line else { // subtract pixels used and increment segment |