From da58b592177cc1960e611831038cb9c39eaee4c0 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Wed, 28 Oct 2009 15:21:23 -0700
Subject: 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
---
 indra/llui/lltextbase.cpp                                | 13 +++++++------
 indra/newview/skins/default/xui/en/panel_group_roles.xml |  4 ++--
 2 files changed, 9 insertions(+), 8 deletions(-)

(limited to 'indra')

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;
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index 75ded4f249..af1919bd8f 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -486,7 +486,7 @@ things in this group. There&apos;s a broad variety of Abilities.
         </panel>
     </tab_container>
     <panel
-     height="170"
+     height="190"
      layout="topleft"
      follows="left|top"
      left="10"
@@ -556,7 +556,7 @@ things in this group. There&apos;s a broad variety of Abilities.
         </scroll_list>
     </panel>
     <panel
-     height="215"
+     height="252"
      layout="topleft"
      left_delta="0"
      name="roles_footer"
-- 
cgit v1.2.3