diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 0e57ba02bfdc78e199543700098ca8a27afb77e3..1b6e4ed0e59899c9e7bd2896cc004180077cddf9 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2234,7 +2234,8 @@ LLFloaterView::LLFloaterView (const Params& p)
 	mFocusCycleMode(FALSE),
 	mMinimizePositionVOffset(0),
 	mSnapOffsetBottom(0),
-	mSnapOffsetRight(0)
+	mSnapOffsetRight(0),
+	mFrontChild(NULL)
 {
 	mSnapView = getHandle();
 }
@@ -2383,6 +2384,13 @@ LLRect LLFloaterView::findNeighboringPosition( LLFloater* reference_floater, LLF
 
 void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus)
 {
+	if (mFrontChild == child)
+	{
+		return;
+	}
+
+	mFrontChild = child;
+
 	// *TODO: make this respect floater's mAutoFocus value, instead of
 	// using parameter
 	if (child->getHost())
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 07b79d55239aaf1c0e2c1c1884e85f79f23478cf..ca0710cdc1ac9d35c95054b66eef0a387e565b15 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -576,6 +576,7 @@ class LLFloaterView : public LLUICtrl
 	S32				mMinimizePositionVOffset;
 	typedef std::vector<std::pair<LLHandle<LLFloater>, boost::signals2::connection> > hidden_floaters_t;
 	hidden_floaters_t mHiddenFloaters;
+	LLFloater *		mFrontChild;
 };
 
 //