diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index ada7570776dcaf4568c2854faf00d35f8123f2ca..9ba8431fdeac47a1f1fac5e4a024004584da07c5 100644
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -73,9 +73,14 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal
 	// save currently focused view, so that return focus to it
 	// on destroying this toast.
 	LLView* current_selection = dynamic_cast<LLView*>(gFocusMgr.getKeyboardFocus());
-	if (current_selection)
+	while(current_selection)
 	{
-		mPreviouslyFocusedView = current_selection->getHandle();
+		if (current_selection->isFocusRoot())
+		{
+			mPreviouslyFocusedView = current_selection->getHandle();
+			break;
+		}
+		current_selection = current_selection->getParent();
 	}
 
 	const LLFontGL* font = LLFontGL::getFontSansSerif();
@@ -422,7 +427,7 @@ LLToastAlertPanel::~LLToastAlertPanel()
 	// return focus to the previously focused view
 	if (mPreviouslyFocusedView.get())
 	{
-		gFocusMgr.setKeyboardFocus(mPreviouslyFocusedView.get());
+		mPreviouslyFocusedView.get()->setFocus(TRUE);
 	}
 }