diff options
| -rw-r--r-- | indra/llcommon/llchat.h | 3 | ||||
| -rw-r--r-- | indra/newview/llchathistory.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/skins/default/textures/icons/unknown_icon.png | bin | 0 -> 884 bytes | |||
| -rw-r--r-- | indra/newview/skins/default/textures/textures.xml | 1 | 
5 files changed, 30 insertions, 4 deletions
| diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 52238d4533..f1b9091298 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -43,7 +43,8 @@ typedef enum e_chat_source_type  {  	CHAT_SOURCE_SYSTEM = 0,  	CHAT_SOURCE_AGENT = 1, -	CHAT_SOURCE_OBJECT = 2 +	CHAT_SOURCE_OBJECT = 2, +	CHAT_SOURCE_UNKNOWN = 3  } EChatSourceType;  typedef enum e_chat_type diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 5e8d5a63d0..45c2d26fde 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -209,6 +209,8 @@ public:  	void showInspector()  	{ +		if (mAvatarID.isNull() && CHAT_SOURCE_SYSTEM != mSourceType) return; +		  		if (mSourceType == CHAT_SOURCE_OBJECT)  		{  			LLFloaterReg::showInstance("inspect_object", LLSD().with("object_id", mAvatarID)); @@ -279,6 +281,9 @@ public:  				break;  			case CHAT_SOURCE_SYSTEM:  				icon->setValue(LLSD("SL_Logo")); +				break; +			case CHAT_SOURCE_UNKNOWN:  +				icon->setValue(LLSD("Unknown_Icon"));  		}  	} @@ -325,9 +330,9 @@ protected:  	{  		if(mSourceType == CHAT_SOURCE_SYSTEM)  			showSystemContextMenu(x,y); -		if(mSourceType == CHAT_SOURCE_AGENT) +		if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_AGENT)  			showAvatarContextMenu(x,y); -		if(mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom) +		if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom)  			showObjectContextMenu(x,y);  	} @@ -632,7 +637,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  		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.mSourceType == CHAT_SOURCE_OBJECT ) +			if ( chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mFromID.notNull())  			{  				// for object IMs, create a secondlife:///app/objectim SLapp  				std::string url = LLSLURL::buildCommand("objectim", chat.mFromID, ""); diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 16384ef6e0..c8d5d782b7 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -278,6 +278,13 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)  		nearby_chat->updateChatHistoryStyle();  } +bool isTwoWordsName(const std::string& name) +{ +	//checking for a single space +	S32 pos = name.find(' ', 0); +	return std::string::npos != pos && name.rfind(' ', name.length()) == pos && 0 != pos && name.length()-1 != pos; +} +  void LLNearbyChat::loadHistory()  {  	LLSD do_not_log; @@ -304,6 +311,18 @@ void LLNearbyChat::loadHistory()  		chat.mText = msg[IM_TEXT].asString();  		chat.mTimeStr = msg[IM_TIME].asString();  		chat.mChatStyle = CHAT_STYLE_HISTORY; + +		chat.mSourceType = CHAT_SOURCE_AGENT; +		if (from_id.isNull() && SYSTEM_FROM == from) +		{	 +			chat.mSourceType = CHAT_SOURCE_SYSTEM; +			 +		} +		else if (from_id.isNull()) +		{ +			chat.mSourceType = isTwoWordsName(from) ? CHAT_SOURCE_UNKNOWN : CHAT_SOURCE_OBJECT; +		} +  		addMessage(chat, true, do_not_log);  		it++; diff --git a/indra/newview/skins/default/textures/icons/unknown_icon.png b/indra/newview/skins/default/textures/icons/unknown_icon.pngBinary files differ new file mode 100644 index 0000000000..8441d86596 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/unknown_icon.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f200566c0e..4768cf14fb 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -516,6 +516,7 @@ with the same filename but different name    <texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" />    <texture name="OBJECT_Icon" file_name="icons/object_icon.png" preload="true" /> +  <texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" />    <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />    <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" /> | 
