diff options
author | Denis Serdjuk <dserduk@productengine.com> | 2009-12-18 15:35:51 +0200 |
---|---|---|
committer | Denis Serdjuk <dserduk@productengine.com> | 2009-12-18 15:35:51 +0200 |
commit | bde0540ab5cea7ad4941a847094e0f8f0ff3e723 (patch) | |
tree | 9f3bc33b5160409e69790dcc5d2414a01d33e220 /indra/newview/llparticipantlist.cpp | |
parent | d1a857de1f0bb3e7f38ffae6cd4901e188c37ba3 (diff) |
implemented major task EXT-3509 User's own name should appear in the Group chat participant list
--HG--
branch : product-engine
Diffstat (limited to 'indra/newview/llparticipantlist.cpp')
-rw-r--r-- | indra/newview/llparticipantlist.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 93e5b8fa15..1cc08b75da 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -49,11 +49,14 @@ #pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally #endif +static const LLAvatarItemAgentOnTopComparator AGENT_ON_TOP_NAME_COMPARATOR; + LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list, bool use_context_menu/* = true*/): mSpeakerMgr(data_source), mAvatarList(avatar_list), mSortOrder(E_SORT_BY_NAME) , mParticipantListMenu(NULL) +, mExcludeAgent(true) { mSpeakerAddListener = new SpeakerAddListener(*this); mSpeakerRemoveListener = new SpeakerRemoveListener(*this); @@ -97,6 +100,8 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av mModeratorList.insert(speakerp->mID); } } + // we need to exclude agent id for non group chat + mExcludeAgent = !gAgent.isInGroup(mSpeakerMgr->getSessionID()); mAvatarList->setDirty(true); sort(); } @@ -307,7 +312,16 @@ void LLParticipantList::sort() // TODO: Implement more sorting orders after specs updating (EM) switch ( mSortOrder ) { case E_SORT_BY_NAME : - mAvatarList->sortByName(); + // if mExcludeAgent == true , then no need to keep agent on top of the list + if(mExcludeAgent) + { + mAvatarList->sortByName(); + } + else + { + mAvatarList->setComparator(&AGENT_ON_TOP_NAME_COMPARATOR); + mAvatarList->sort(); + } break; default : llwarns << "Unrecognized sort order for " << mAvatarList->getName() << llendl; @@ -317,7 +331,7 @@ void LLParticipantList::sort() void LLParticipantList::addAvatarIDExceptAgent(std::vector<LLUUID>& existing_list, const LLUUID& avatar_id) { - if (gAgent.getID() == avatar_id) return; + if (mExcludeAgent && gAgent.getID() == avatar_id) return; existing_list.push_back(avatar_id); adjustParticipant(avatar_id); |