diff options
| -rw-r--r-- | indra/newview/llexpandabletextbox.cpp | 33 | ||||
| -rw-r--r-- | indra/newview/llexpandabletextbox.h | 6 | 
2 files changed, 24 insertions, 15 deletions
| diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 5e10f60aba..5501b8c2ac 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -123,10 +123,7 @@ void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL calle  {  	LLTextEditor::reshape(width, height, called_from_parent); -	if (getTextPixelHeight() > getRect().getHeight()) -	{ -		showExpandText(); -	} +	hideOrShowExpandTextAsNeeded();  }  void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,const LLStyle::Params& input_params) @@ -136,17 +133,7 @@ void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,cons  	mExpanderVisible = false;  	LLTextEditor::setText(text, input_params); -	// text contents have changed, segments are cleared out -	// so hide the expander and determine if we need it -	//mExpanderVisible = false; -	if (getTextPixelHeight() > getRect().getHeight()) -	{ -		showExpandText(); -	} -	else -	{ -		hideExpandText(); -	} +	hideOrShowExpandTextAsNeeded();  } @@ -200,6 +187,22 @@ S32 LLExpandableTextBox::LLTextBoxEx::getTextPixelHeight()  	return getTextBoundingRect().getHeight();  } +void LLExpandableTextBox::LLTextBoxEx::hideOrShowExpandTextAsNeeded() +{ +	// Restore the text box contents to calculate the text height properly, +	// otherwise if a part of the text is hidden under "More" link +	// getTextPixelHeight() returns only the height of currently visible text +	// including the "More" link. See STORM-250. +	hideExpandText(); + +	// Show the expander a.k.a. "More" link if we need it, depending on text +	// contents height. If not, keep it hidden. +	if (getTextPixelHeight() > getRect().getHeight()) +	{ +		showExpandText(); +	} +} +  //////////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index bce77225c4..f75ef954ff 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -77,6 +77,12 @@ protected:  		 */  		void hideExpandText(); +		/** +		 * Shows the "More" link if the text is too high to be completely +		 * visible without expanding the text box. Hides that link otherwise. +		 */ +		void hideOrShowExpandTextAsNeeded(); +  	protected:  		LLTextBoxEx(const Params& p); | 
