diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 29d05b8002d0bc1b120a09ec67983746ba2ccd52..c1faa304a81a2f7f77ccec3cc70d1956e9e74b71 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -685,7 +685,12 @@ void LLFloater::openFloater(const LLSD& key)
 	}
 	else
 	{
-		applyControlsAndPosition(LLFloaterReg::getLastFloaterCascading());
+		LLFloater* floater_to_stack = LLFloaterReg::getLastFloaterInGroup(mInstanceName);
+		if (!floater_to_stack)
+		{
+			floater_to_stack = LLFloaterReg::getLastFloaterCascading();
+		}
+		applyControlsAndPosition(floater_to_stack);
 		setMinimized(FALSE);
 		setVisibleAndFrontmost(mAutoFocus);
 	}
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 1f0a9252c869e12d63d882f326e4a6fa5e9c3357..21cb3380c9e8f0e6c4515065961f5fb11120ed47 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -175,7 +175,7 @@ bool LLAgent::isActionAllowed(const LLSD& sdname)
 	}
 	else if (param == "speak")
 	{
-		if ( gAgent.isVoiceConnected() )
+		if ( gAgent.isVoiceConnected() && LLViewerParcelMgr::getInstance()->allowAgentVoice() )
 		{
 			retval = true;
 		}