diff options
author | richard <none@none> | 2009-10-28 15:21:23 -0700 |
---|---|---|
committer | richard <none@none> | 2009-10-28 15:21:23 -0700 |
commit | da58b592177cc1960e611831038cb9c39eaee4c0 (patch) | |
tree | 6f4af1524c7017b817a2e5a93c42f9061b037df8 /indra/llui/lltextbase.cpp | |
parent | 6e8c5d206ef72357bea7354f88248f671092bc0e (diff) |
ext-1483 - Scrollable lists in side panel can sometimes get stuck
apparent XUI error
Also fixed terminating newlines in text editors not flowing to next line
reviewed by Leyla
Diffstat (limited to 'indra/llui/lltextbase.cpp')
-rw-r--r-- | indra/llui/lltextbase.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 653505a12e..2b1d677ffb 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -419,9 +419,6 @@ void LLTextBase::drawCursor() return; } - if (!mTextRect.contains(cursor_rect)) - return; - // Draw the cursor // (Flash the cursor every half second starting a fixed time after the last keystroke) F32 elapsed = mCursorBlinkTimer.getElapsedTimeF32(); @@ -2381,7 +2378,6 @@ S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin { if (text[last_char] == '\n') { - last_char++; break; } } @@ -2401,9 +2397,14 @@ S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin // If at the beginning of a line, and a single character won't fit, draw it anyway num_chars = 1; } - if (mStart + segment_offset + num_chars == mEditor.getLength()) + + // include *either* the EOF or newline character in this run of text + // but not both + S32 last_char_in_run = mStart + segment_offset + num_chars; + // check length first to avoid indexing off end of string + if (last_char_in_run >= mEditor.getLength() + || text[last_char_in_run] == '\n') { - // include terminating NULL num_chars++; } return num_chars; |