summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llconversationlog.cpp2
-rw-r--r--indra/newview/llconversationmodel.cpp29
-rw-r--r--indra/newview/llfloaterconversationlog.cpp1
-rw-r--r--indra/newview/llfloaterimsessiontab.cpp29
-rw-r--r--indra/newview/llimview.cpp11
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())
{