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;