diff --git a/indra/newview/lltoastscriptquestion.cpp b/indra/newview/lltoastscriptquestion.cpp
index 91ba8c024777f65132303860936218e8a0f44c1f..7a3a1d8fd7971177116e23519820e70a2964c74a 100644
--- a/indra/newview/lltoastscriptquestion.cpp
+++ b/indra/newview/lltoastscriptquestion.cpp
@@ -54,6 +54,19 @@ BOOL LLToastScriptQuestion::postBuild()
 
 	return TRUE;
 }
+
+// virtual
+void LLToastScriptQuestion::setFocus(BOOL b)
+{
+    LLToastPanel::setFocus(b);
+    // toast can fade out and disappear with focus ON, so reset to default anyway
+    LLButton* dfbutton = getDefaultButton();
+    if (dfbutton && dfbutton->getVisible() && dfbutton->getEnabled())
+    {
+        dfbutton->setFocus(b);
+    }
+}
+
 void LLToastScriptQuestion::snapToMessageHeight()
 {
 	LLTextBox* mMessage = getChild<LLTextBox>("top_info_message");
@@ -118,6 +131,12 @@ void LLToastScriptQuestion::createButtons()
 			button->setRect(rect);
 
 			buttons_width += rect.getWidth() + LEFT_PAD;
+
+			if (form_element.has("default") && form_element["default"].asBoolean())
+			{
+				button->setFocus(TRUE);
+				setDefaultBtn(button);
+			}
 		}
 	}
 }
diff --git a/indra/newview/lltoastscriptquestion.h b/indra/newview/lltoastscriptquestion.h
index 3a557f60f66dc70fde27f855117416ca4691c828..a756f88415ef5f7e89834ec18d19664097c8ee4f 100644
--- a/indra/newview/lltoastscriptquestion.h
+++ b/indra/newview/lltoastscriptquestion.h
@@ -39,6 +39,8 @@ class LLToastScriptQuestion : public LLToastPanel
 	virtual BOOL postBuild();
 	virtual ~LLToastScriptQuestion(){};
 
+	/*virtual*/ void setFocus(BOOL b);
+
 private:
 	void snapToMessageHeight();