diff options
| author | Merov Linden <merov@lindenlab.com> | 2013-03-27 16:10:07 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2013-03-27 16:10:07 -0700 | 
| commit | dfa14269971fb102fbdd2c435d31d9eef1041f46 (patch) | |
| tree | 87e6a6900540c26cfcff6627696d57fc6c775993 | |
| parent | 9f819806cd0a2301c83a866d06594ce7b2f3c3d5 (diff) | |
| parent | d29a2e2977090e0e4cf4c392d64757a10fca91a9 (diff) | |
Pull merge from lindenlab/viewer-chui
| -rw-r--r-- | indra/llui/lltextbase.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llchiclet.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterimnearbychat.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 6 | 
4 files changed, 29 insertions, 7 deletions
| diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index ebc9ee244e..270d5294f9 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -3201,7 +3201,23 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin  	LLFontGL::EWordWrapStyle word_wrap_style = (line_offset == 0)   		? LLFontGL::WORD_BOUNDARY_IF_POSSIBLE   		: LLFontGL::ONLY_WORD_BOUNDARIES; -	S32 num_chars = mStyle->getFont()->maxDrawableChars(text.c_str() + segment_offset + mStart,  +	 +	 +	LLWString offsetString(text.c_str() + segment_offset + mStart); + +	if(getLength() < segment_offset + mStart) +	{ +		llerrs << "getLength() < segment_offset + mStart\t getLength()\t" << getLength() << "\tsegment_offset:\t"  +						<< segment_offset << "\tmStart:\t" << mStart << "\tsegments\t" << mEditor.mSegments.size() << "\tmax_chars\t" << max_chars << llendl; +	} + +	if(offsetString.length() + 1 < max_chars) +	{ +		llerrs << "offsetString.length() + 1 < max_chars\t max_chars:\t" << max_chars << "\toffsetString.length():\t" << offsetString.length() +			<< getLength() << "\tsegment_offset:\t" << segment_offset << "\tmStart:\t" << mStart << "\tsegments\t" << mEditor.mSegments.size() << llendl; +	} +	 +	S32 num_chars = mStyle->getFont()->maxDrawableChars(offsetString.c_str(),   												(F32)num_pixels,  												max_chars,   												word_wrap_style); diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index b221daf936..43c6b558bc 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -174,6 +174,7 @@ void LLNotificationChiclet::onMenuItemClicked(const LLSD& user_data)  	if("close all" == action)  	{  		LLNotificationWellWindow::getInstance()->closeAll(); +		LLIMWellWindow::getInstance()->closeAll();  	}  } diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp index 171509af59..89b608b586 100644 --- a/indra/newview/llfloaterimnearbychat.cpp +++ b/indra/newview/llfloaterimnearbychat.cpp @@ -485,11 +485,14 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()  		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))  		{  			std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size()); -			mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part +			if (!rest_of_match.empty()) +			{ +				mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part -			// Select to end of line, starting from the character -			// after the last one the user typed. -			mInputEditor->selectNext(rest_of_match, false); +				// Select to end of line, starting from the character +				// after the last one the user typed. +				mInputEditor->selectNext(rest_of_match, false); +			}  		}  		else if (matchChatTypeTrigger(utf8_trigger, &utf8_out_str))  		{ diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a84dbcd84a..ca04d27d11 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -224,8 +224,9 @@ void on_new_message(const LLSD& msg)      // actions:      // 0. nothing - exit -    if ("none" == user_preferences || +    if (("none" == user_preferences ||      		ON_TOP_AND_ITEM_IS_SELECTED == conversations_floater_status) +    	&& session_floater->isMessagePaneExpanded())      {      	return;      } @@ -294,9 +295,10 @@ void on_new_message(const LLSD& msg)      }      // 4. Toast -    if ("toast" == user_preferences && +    if (("toast" == user_preferences &&      		(CLOSED == conversations_floater_status      		    || NOT_ON_TOP == conversations_floater_status)) +    		    || !session_floater->isMessagePaneExpanded())      {          //Show IM toasts (upper right toasts)          // Skip toasting for system messages and for nearby chat | 
