summaryrefslogtreecommitdiff
path: root/indra/newview/llimview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llimview.cpp')
-rw-r--r--indra/newview/llimview.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 592ccc5a9b..2566c2f357 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -952,7 +952,42 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
}
// Add the recipient to the recent people list.
- LLRecentPeople::instance().add(other_participant_id);
+ bool is_not_group_id = LLGroupMgr::getInstance()->getGroupData(other_participant_id) == NULL;
+
+ if (is_not_group_id)
+ {
+
+#if 0
+ //use this code to add only online members
+ LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id);
+ LLSpeakerMgr::speaker_list_t speaker_list;
+ speaker_mgr->getSpeakerList(&speaker_list, true);
+ for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++)
+ {
+ const LLPointer<LLSpeaker>& speakerp = *it;
+
+ LLRecentPeople::instance().add(speakerp->mID);
+ }
+#else
+ LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id);
+ if( session == 0)//??? shouldn't really happen
+ {
+ LLRecentPeople::instance().add(other_participant_id);
+ }
+ else
+ {
+ for(std::vector<LLUUID>::iterator it = session->mInitialTargetIDs.begin();
+ it!=session->mInitialTargetIDs.end();++it)
+ {
+ const LLUUID id = *it;
+
+ LLRecentPeople::instance().add(id);
+ }
+ }
+#endif
+ }
+
+
}
void session_starter_helper(
@@ -1473,6 +1508,8 @@ LLCallDialog::LLCallDialog(const LLSD& payload)
mLifetime(DEFAULT_LIFETIME)
{
setAutoFocus(FALSE);
+ // force docked state since this floater doesn't save it between recreations
+ setDocked(true);
}
void LLCallDialog::getAllowedRect(LLRect& rect)