diff --git a/layout/html/forms/src/nsButtonControlFrame.cpp b/layout/html/forms/src/nsButtonControlFrame.cpp
index d55f7b87c12d..285746cf02f3 100644
--- a/layout/html/forms/src/nsButtonControlFrame.cpp
+++ b/layout/html/forms/src/nsButtonControlFrame.cpp
@@ -481,8 +481,8 @@ nsButtonControlFrame::PaintButton(nsIPresContext& aPresContext,
NS_IMETHODIMP
nsButtonControlFrame::HandleEvent(nsIPresContext& aPresContext,
- nsGUIEvent* aEvent,
- nsEventStatus& aEventStatus)
+ nsGUIEvent* aEvent,
+ nsEventStatus& aEventStatus)
{
nsWidgetRendering mode;
aPresContext.GetWidgetRenderingMode(&mode);
@@ -497,27 +497,37 @@ nsButtonControlFrame::HandleEvent(nsIPresContext& aPresContext,
}
nsresult result = mRenderer.HandleEvent(aPresContext, aEvent, aEventStatus);
- if (NS_OK != result)
- return result;
+ if (NS_OK != result) {
+ return result;
+ }
aEventStatus = nsEventStatus_eIgnore;
switch (aEvent->message) {
case NS_MOUSE_ENTER:
- break;
+ break;
case NS_MOUSE_LEFT_BUTTON_DOWN:
- mRenderer.SetFocus(PR_TRUE, PR_TRUE);
- break;
+ mRenderer.SetFocus(PR_TRUE, PR_TRUE);
+ break;
case NS_MOUSE_LEFT_BUTTON_UP:
- if (mRenderer.isHover())
- MouseClicked(&aPresContext);
- break;
+ if (mRenderer.isHover()) {
+ MouseClicked(&aPresContext);
+ }
+ break;
+
+ case NS_KEY_DOWN:
+ if (NS_KEY_EVENT == aEvent->eventStructType) {
+ nsKeyEvent* keyEvent = (nsKeyEvent*)aEvent;
+ if (NS_VK_SPACE == keyEvent->keyCode) {
+ MouseClicked(&aPresContext);
+ }
+ }
case NS_MOUSE_EXIT:
- break;
+ break;
}
return NS_OK;