diff options
| author | Eugene Mutavchi <emutavchi@productengine.com> | 2010-01-14 18:15:01 +0200 | 
|---|---|---|
| committer | Eugene Mutavchi <emutavchi@productengine.com> | 2010-01-14 18:15:01 +0200 | 
| commit | 24d8bf26fc489c7cb35cd4d8bfba2ca8c1e46442 (patch) | |
| tree | 9cb78224033de76b695133c9651ee49738cd6981 | |
| parent | eb800ade7eb27038823e12f667901ea32c14160d (diff) | |
Fixed normal bug EXT-4072([BSI] Emotes appear as (italic) text chat in plain text mode)
--HG--
branch : product-engine
| -rw-r--r-- | indra/newview/llchathistory.cpp | 50 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llnearbychathandler.cpp | 24 | 
3 files changed, 35 insertions, 61 deletions
| diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 9a1572364f..2fc83c7e54 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -499,24 +499,29 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  	style_params.font.name(font_name);  	style_params.font.size(font_size);	  	style_params.font.style(input_append_params.font.style); -	 -	//whether to show colon after a name in header copy/past and in plain text mode -	bool show_colon = chat.mChatType != CHAT_TYPE_SHOUT && chat.mChatType != CHAT_TYPE_WHISPER;  + +	std::string prefix = chat.mText.substr(0, 4);  	//IRC styled /me messages. -	bool irc_me = false; +	bool irc_me = prefix == "/me " || prefix == "/me'"; -	std::string prefix = chat.mText.substr(0, 4); -	if (prefix == "/me " || prefix == "/me'") +	// Delimiter after a name in header copy/past and in plain text mode +	std::string delimiter = (chat.mChatType != CHAT_TYPE_SHOUT && chat.mChatType != CHAT_TYPE_WHISPER) +		? ": " +		: " "; + +	// Don't add any delimiter after name in irc styled messages +	if (irc_me || chat.mChatStyle == CHAT_STYLE_IRC)  	{ -		irc_me = true; +		delimiter = LLStringUtil::null; +		style_params.font.style = "ITALIC";  	}  	if (use_plain_text_chat_history)  	{  		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params); -		if (utf8str_trim(chat.mFromName).size() != 0 && !irc_me) +		if (utf8str_trim(chat.mFromName).size() != 0)  		{  			// Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text.  			if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) @@ -524,11 +529,11 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  				LLStyle::Params link_params(style_params);  				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));  				// Convert the name to a hotlink and add to message. -				mEditor->appendText(chat.mFromName + (show_colon ? ": " : " "), false, link_params); +				mEditor->appendText(chat.mFromName + delimiter, false, link_params);  			}  			else  			{ -				mEditor->appendText(chat.mFromName + (show_colon ? ": " : " "), false, style_params); +				mEditor->appendText(chat.mFromName + delimiter, false, style_params);  			}  		}  	} @@ -574,35 +579,22 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_  		std::string header_text = "[" + chat.mTimeStr + "] ";  		if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM) -			header_text += chat.mFromName + (show_colon ? ": " : " "); +			header_text += chat.mFromName + delimiter;  		mEditor->appendWidget(p, header_text, false);  		mLastFromName = chat.mFromName;  		mLastFromID = chat.mFromID;  		mLastMessageTime = new_message_time;  	} -	 -	if (irc_me) -	{ -		style_params.font.style = "ITALIC"; -		if (chat.mFromName.size() > 0) -			mEditor->appendText(chat.mFromName, FALSE, style_params); +	std::string message = irc_me ? chat.mText.substr(3) : chat.mText; +	if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) ) +	{  		// Ensure that message ends with NewLine, to avoid losing of new lines  		// while copy/paste from text chat. See EXT-3263. -		mEditor->appendText(chat.mText.substr(3) + NEW_LINE, FALSE, style_params); -	} -	else -	{ -		std::string message(chat.mText); -		if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) ) -		{ -			// Ensure that message ends with NewLine, to avoid losing of new lines -			// while copy/paste from text chat. See EXT-3263. -			message += NEW_LINE; -		} -		mEditor->appendText(message, FALSE, style_params); +		message += NEW_LINE;  	} +	mEditor->appendText(message, FALSE, style_params);  	mEditor->blockUndo();  	// automatically scroll to end when receiving chat from myself diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index fc0e51b76d..a7c1e73328 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -179,27 +179,7 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)  	if (!chat.mMuted)  	{  		tmp_chat.mFromName = chat.mFromName; - -		if (chat.mChatStyle == CHAT_STYLE_IRC) -		{ -			LLColor4 txt_color = LLUIColorTable::instance().getColor("White"); -			LLViewerChat::getChatColor(chat,txt_color); -			LLFontGL* fontp = LLViewerChat::getChatFont(); -			std::string font_name = LLFontGL::nameFromFont(fontp); -			std::string font_size = LLFontGL::sizeFromFont(fontp); -			LLStyle::Params append_style_params; -			append_style_params.color(txt_color); -			append_style_params.readonly_color(txt_color); -			append_style_params.font.name(font_name); -			append_style_params.font.size(font_size); -			append_style_params.font.style = "ITALIC"; - -			mChatHistory->appendMessage(chat, use_plain_text_chat_history, append_style_params); -		} -		else -		{ -			mChatHistory->appendMessage(chat, use_plain_text_chat_history); -		} +		mChatHistory->appendMessage(chat, use_plain_text_chat_history);  	}  	if(archive) diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index de4249a1dc..96442fafcc 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -180,6 +180,11 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)  		if(panel && panel->messageID() == fromID && panel->canAddText())  		{ +			if (CHAT_STYLE_IRC == notification["chat_style"].asInteger()) +			{ +				notification["message"] = notification["from"].asString() + notification["message"].asString(); +			} +  			panel->addMessage(notification);  			toast->reshapeToPanel();  			toast->resetTimer(); @@ -331,25 +336,22 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg)  	LLChat& tmp_chat = const_cast<LLChat&>(chat_msg); -	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) -	{ -		if(!tmp_chat.mFromName.empty()) -			tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3); -		else -			tmp_chat.mText = tmp_chat.mText.substr(3); -	} -	 +	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  	{  		//sometimes its usefull to have no name at all...  		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)  		//	tmp_chat.mFromName = tmp_chat.mFromID.asString();  	} -	 -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  	nearby_chat->addMessage(chat_msg);  	if(nearby_chat->getVisible())  		return;//no need in toast if chat is visible -	 + +	// Handle irc styled messages for toast panel +	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) +	{ +		tmp_chat.mText = tmp_chat.mText.substr(3); +	} +  	// arrange a channel on a screen  	if(!mChannel->getVisible())  	{ | 
