diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 7020ac0c6598d3b4dd3f647fc92f367ca417ad8b..edde7c8076c0703dba2aa3dbf481f2566042ebd4 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -202,6 +202,21 @@ void LLToast::hide()
 	}
 }
 
+/*virtual*/
+void LLToast::setFocus(BOOL b)
+{
+    if (b && !hasFocus() && mPanel)
+    {
+        LLModalDialog::setFocus(TRUE);
+        // mostly for buttons
+        mPanel->setFocus(TRUE);
+    }
+    else
+    {
+        LLModalDialog::setFocus(b);
+    }
+}
+
 void LLToast::onFocusLost()
 {
 	if(mWrapperPanel && !isBackgroundVisible())
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index f02d7c2a1a99ea8f5247a5401a527d8067739b08..cd92189012de3b394ced1313c8021a42a3f9d8eb 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -150,6 +150,8 @@ class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast>
 	//
 	virtual void hide();
 
+	/*virtual*/ void setFocus(BOOL b);
+
 	/*virtual*/ void onFocusLost();
 
 	/*virtual*/ void onFocusReceived();