diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 8584885bc974e842e63d916ead326abf9e76db4d..9a84280f258f7be30c1763d1882c88943cdec6ae 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -35,6 +35,7 @@
 #include "llfloaterreg.h"
 #include "lllocalcliprect.h"
 #include "lltrans.h"
+#include "llnearbychatbar.h"
 
 #include "llviewercontrol.h"
 #include "llagentdata.h"
@@ -315,12 +316,12 @@ BOOL	LLNearbyChatToastPanel::handleMouseUp	(S32 x, S32 y, MASK mask)
 			return TRUE;
 		else
 		{
-			LLFloaterReg::showInstance("nearby_chat",LLSD());
+			LLNearbyChatBar::getInstance()->showHistory();
 			return FALSE;
 		}
 	}
 
-	LLFloaterReg::showInstance("nearby_chat",LLSD());
+	LLNearbyChatBar::getInstance()->showHistory();
 	return LLPanel::handleMouseUp(x,y,mask);
 }
 
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 9d020517d84c275cf2f6a2e39e0c20f9931ffb2f..8105844b0df391d549e267836d622a2e3714fa93 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2217,7 +2217,7 @@ void LLFloaterSnapshot::draw()
 
 	LLFloater::draw();
 
-	if (previewp)
+	if (previewp && !isMinimized())
 	{		
 		if(previewp->getThumbnailImage())
 		{
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 3073a19d83224b4bc575eec8f31cbdbff8748ab9..cd84275ef0972932ba426220f1f7b9f769ae844b 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -135,6 +135,16 @@ LLNearbyChatBar* LLNearbyChatBar::getInstance()
 	return LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar");
 }
 
+void LLNearbyChatBar::showHistory()
+{
+	if (!getChildView("nearby_chat")->getVisible())
+	{
+		onToggleNearbyChatPanel();
+	}
+	
+	openFloater();
+}
+
 void LLNearbyChatBar::draw()
 {
 	displaySpeakingIndicator();
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index a6fd6e5665b76033bdf1a81e6f776bcbcb5b7682..5a7edac1bbf3690ac7d8b8f3b6f583a2100ddf94 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -59,6 +59,8 @@ class LLNearbyChatBar :	public LLFloater
 	static void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate);
 	static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
 
+	void showHistory();
+
 protected:
 	static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str);
 	static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata);
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index dcf444b048c4129109d232238a830946ad787c2b..7503164fe644b41ebc8d71178e9e01dae97dfa46 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -581,7 +581,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 	sChatWatcher->post(notification);
 
 
-	if( nearby_chat->getVisible()
+	if( chat_bar->getVisible() && nearby_chat->getVisible() 
 		|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
 			&& gSavedSettings.getBOOL("UseChatBubbles") )
 		|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode