diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 9faa12b2eeade59bba5d8d7797d4c19b318804bb..4f875cca20592113a0c3dc2cf9d3afe1fd6507fb 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -316,9 +316,16 @@ void LLConversationViewSession::selectConversationItem()
 		LLUUID session_id = item? item->getUUID() : LLUUID();
 
 		LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
+		if (im_container->isConversationsPaneCollapsed() && im_container->getSelectedSession() == session_id)
+		{
+			im_container->collapseMessagesPane(!im_container->isMessagesPaneCollapsed());
+		}
+		else
+		{
+			im_container->collapseMessagesPane(false);
+		}
 		im_container->flashConversationItemWidget(session_id,false);
 		im_container->selectConversationPair(session_id, false);
-		im_container->collapseMessagesPane(false);
 	}
 }
 
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index aa3bec878a9a18fb4256914b377702b5bbe78456..258cace042e74aec26bf1cd10b7d03901b42681b 100755
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -721,6 +721,16 @@ void LLFloaterIMContainer::updateResizeLimits()
 	assignResizeLimits();
 }
 
+bool LLFloaterIMContainer::isMessagesPaneCollapsed()
+{
+	return mMessagesPane->isCollapsed();
+}
+
+bool LLFloaterIMContainer::isConversationsPaneCollapsed()
+{
+	return mConversationsPane->isCollapsed();
+}
+
 void LLFloaterIMContainer::collapseMessagesPane(bool collapse)
 {
 	if (mMessagesPane->isCollapsed() == collapse)
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 5d88b7881a0dda2fd4ba1205d9f93970d94d7e49..f6d973b9b3be5f7646d3be62b25106d62bc39549 100755
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -90,6 +90,8 @@ class LLFloaterIMContainer
 	static void onCurrentChannelChanged(const LLUUID& session_id);
 
 	void collapseMessagesPane(bool collapse);
+	bool isMessagesPaneCollapsed();
+	bool isConversationsPaneCollapsed();
 	
 	// Callbacks
 	static void idle(void* user_data);