From 13a619cb5fc8da621d4e7becbf95ca2a8014deb3 Mon Sep 17 00:00:00 2001
From: Gilbert Gonzales <gilbert@lindenlab.com>
Date: Tue, 18 Dec 2012 18:15:28 -0800
Subject: CHUI-385: Problem: When the new session was created with multiple
 participants the old conversation floater was being recycled. When the
 conversation floater was re-initialized it did not remove and update the chat
 messages. Resolution: When the conversation floater is recycled simply call
 reloadMessages().

---
 indra/newview/llfloaterimsession.cpp | 5 +----
 indra/newview/llfloaterimsession.h   | 4 ----
 indra/newview/llimview.cpp           | 3 ++-
 3 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index f2afe9d7bb..ff07ddfcbf 100644
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -73,8 +73,7 @@ LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id)
 	mTypingTimer(),
 	mTypingTimeoutTimer(),
 	mPositioned(false),
-	mSessionInitialized(false),
-	mStartConferenceInSameFloater(false)
+	mSessionInitialized(false)
 {
 	mIsNearbyChat = false;
 
@@ -462,8 +461,6 @@ void LLFloaterIMSession::addP2PSessionParticipants(const LLSD& notification, con
 		return;
 	}
 
-	mStartConferenceInSameFloater = true;
-
 	LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(mSessionID);
 
 	// first check whether this is a voice session
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index 43d84eb8c0..6a2f4b29eb 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -127,8 +127,6 @@ public:
 	//used as a callback on receiving new IM message
 	static void sRemoveTypingIndicator(const LLSD& data);
 	static void onIMChicletCreated(const LLUUID& session_id);
-
-	bool getStartConferenceInSameFloater() const { return mStartConferenceInSameFloater; }
     const LLUUID& getOtherParticipantUUID() {return mOtherParticipantUUID;}
 
 	static boost::signals2::connection setIMFloaterShowedCallback(const floater_showed_signal_t::slot_type& cb);
@@ -188,8 +186,6 @@ private:
 	bool mSessionInitialized;
 	LLSD mQueuedMsgsForInit;
 
-	bool mStartConferenceInSameFloater;
-
 	uuid_vec_t mInvitedParticipants;
 
 	// connection to voice channel state change signal
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index da3d2e89bf..868dba9687 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2699,12 +2699,13 @@ LLUUID LLIMMgr::addSession(
 	{
 		LLFloaterIMSession* im_floater = LLFloaterIMSession::findInstance(floater_id);
 
-		if (im_floater && im_floater->getStartConferenceInSameFloater())
+		if (im_floater)
 		{
 			// The IM floater should be initialized with a new session_id
 			// so that it is found by that id when creating a chiclet in LLFloaterIMSession::onIMChicletCreated,
 			// and a new floater is not created.
 			im_floater->initIMSession(session_id);
+            im_floater->reloadMessages();
 		}
 	}
 
-- 
cgit v1.2.3