diff options
-rw-r--r-- | indra/newview/llconversationlog.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llconversationmodel.cpp | 29 | ||||
-rw-r--r-- | indra/newview/llfloaterconversationlog.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llfloaterimsessiontab.cpp | 29 | ||||
-rw-r--r-- | indra/newview/llimview.cpp | 11 |
5 files changed, 36 insertions, 36 deletions
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index c68a96ef5d..7bd6ef8cd7 100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -228,7 +228,7 @@ void LLConversationLog::logConversation(const LLUUID& session_id, BOOL has_offli const LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(session_id); LLConversation* conversation = findConversation(session); - if (session) + if (session && session->mOtherParticipantID != gAgentID) { if (conversation) { 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/llfloaterconversationlog.cpp b/indra/newview/llfloaterconversationlog.cpp index a44ebcf6ab..07723ce44d 100644 --- a/indra/newview/llfloaterconversationlog.cpp +++ b/indra/newview/llfloaterconversationlog.cpp @@ -72,6 +72,7 @@ BOOL LLFloaterConversationLog::postBuild() void LLFloaterConversationLog::draw() { + getChild<LLMenuButton>("conversations_gear_btn")->setEnabled(mConversationLogList->getSelectedItem() != NULL); LLFloater::draw(); } 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..5acb0b6374 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) @@ -2545,12 +2546,6 @@ void LLIMMgr::addMessage( { LLUUID other_participant_id = target_id; - // Agent can't create session with himself - if (other_participant_id == gAgentID) - { - return; - } - LLUUID new_session_id = session_id; if (new_session_id.isNull()) { |