diff options
| -rw-r--r-- | indra/newview/llconversationmodel.cpp | 29 | ||||
| -rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 29 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 5 | 
3 files changed, 34 insertions, 29 deletions
| diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp index 7184a70db5..bfc564f407 100644 --- a/indra/newview/llconversationmodel.cpp +++ b/indra/newview/llconversationmodel.cpp @@ -37,6 +37,8 @@  #include "llimview.h" //For LLIMModel  #include "lltrans.h" +#include <boost/foreach.hpp> +  //  // Conversation items : common behaviors  // @@ -234,15 +236,19 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic  	}  	uuid_vec_t temp_uuids; // uuids vector for building the added participants' names string -	if (conversation_type == CONV_SESSION_AD_HOC) +	if (conversation_type == CONV_SESSION_AD_HOC || conversation_type == CONV_SESSION_1_ON_1)  	{  		// Build a string containing the participants UUIDs (minus own agent) and check if ready for display (we don't want "(waiting)" in there)  		// Note: we don't bind ourselves to the LLAvatarNameCache event as updateParticipantName() is called by  		// onAvatarNameCache() which is itself attached to the same event. -		child_list_t::iterator iter = mChildren.begin(); -		while (iter != mChildren.end()) + +		// In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself +		// as we do not create participants for such a session. + +		LLFolderViewModelItem * itemp; +		BOOST_FOREACH(itemp, mChildren)  		{ -			LLConversationItemParticipant* current_participant = dynamic_cast<LLConversationItemParticipant*>(*iter); +			LLConversationItem* current_participant = dynamic_cast<LLConversationItem*>(itemp);  			// Add the avatar uuid to the list (except if it's the own agent uuid)  			if (current_participant->getUUID() != gAgentID)  			{ @@ -250,18 +256,13 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic  				if (LLAvatarNameCache::get(current_participant->getUUID(), &av_name))  				{  					temp_uuids.push_back(current_participant->getUUID()); + +					if (conversation_type == CONV_SESSION_1_ON_1) +					{ +						break; +					}  				}  			} -			iter++; -		} -	} -	else if (conversation_type == CONV_SESSION_1_ON_1) -	{ -		// In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself -		// as we do not create participants for such a session. -		if (gAgentID != participant->getUUID()) -		{ -			temp_uuids.push_back(participant->getUUID());  		}  	} diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp index f52cf3b8f0..6dbcdb4474 100644 --- a/indra/newview/llfloaterimsessiontab.cpp +++ b/indra/newview/llfloaterimsessiontab.cpp @@ -498,25 +498,28 @@ void LLFloaterIMSessionTab::refreshConversation()  		updateSessionName(session_name);  	} -	LLParticipantList* participant_list = getParticipantList(); -	if (participant_list) +	if (mSessionID.notNull())  	{ -		LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin(); -		LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd(); -		LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID); -		while (current_participant_model != end_participant_model) +		LLParticipantList* participant_list = getParticipantList(); +		if (participant_list)  		{ -			LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model); -			if (speaker_mgr && participant_model) +			LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin(); +			LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd(); +			LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID); +			while (current_participant_model != end_participant_model)  			{ -				LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID()); -				LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID); -				if (participant_speaker && agent_speaker) +				LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model); +				if (speaker_mgr && participant_model)  				{ -					participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator); +					LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID()); +					LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID); +					if (participant_speaker && agent_speaker) +					{ +						participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator); +					}  				} +				current_participant_model++;  			} -			current_participant_model++;  		}  	} diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 5dd5704916..aaddcacbb5 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -847,8 +847,9 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co  bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice, bool has_offline_msg)  { -	uuid_vec_t no_ids; -	return newSession(session_id, name, type, other_participant_id, no_ids, voice, has_offline_msg); +	uuid_vec_t ids; +	ids.push_back(other_participant_id); +	return newSession(session_id, name, type, other_participant_id, ids, voice, has_offline_msg);  }  bool LLIMModel::clearSession(const LLUUID& session_id) | 
