diff --git a/content/html/content/src/nsHTMLAtomList.h b/content/html/content/src/nsHTMLAtomList.h
index da65106c5c8..5ccc26cff1d 100644
--- a/content/html/content/src/nsHTMLAtomList.h
+++ b/content/html/content/src/nsHTMLAtomList.h
@@ -67,6 +67,7 @@ HTML_ATOM(alt, "alt")
HTML_ATOM(applet, "applet")
HTML_ATOM(archive, "archive")
HTML_ATOM(area, "area")
+HTML_ATOM(autocheck, "autocheck")
HTML_ATOM(axis, "axis")
HTML_ATOM(background, "background")
HTML_ATOM(base, "base")
diff --git a/content/shared/public/nsHTMLAtomList.h b/content/shared/public/nsHTMLAtomList.h
index da65106c5c8..5ccc26cff1d 100644
--- a/content/shared/public/nsHTMLAtomList.h
+++ b/content/shared/public/nsHTMLAtomList.h
@@ -67,6 +67,7 @@ HTML_ATOM(alt, "alt")
HTML_ATOM(applet, "applet")
HTML_ATOM(archive, "archive")
HTML_ATOM(area, "area")
+HTML_ATOM(autocheck, "autocheck")
HTML_ATOM(axis, "axis")
HTML_ATOM(background, "background")
HTML_ATOM(base, "base")
diff --git a/layout/xul/base/src/nsMenuFrame.cpp b/layout/xul/base/src/nsMenuFrame.cpp
index d34995021cc..8fd69116919 100644
--- a/layout/xul/base/src/nsMenuFrame.cpp
+++ b/layout/xul/base/src/nsMenuFrame.cpp
@@ -1610,14 +1610,11 @@ nsMenuFrame::BuildAcceleratorText()
void
nsMenuFrame::Execute(nsGUIEvent *aEvent)
{
- if (!aEvent || (aEvent->message != NS_MOUSE_RIGHT_BUTTON_UP &&
- aEvent->message != NS_CONTEXTMENU)) {
- // flip "checked" state if we're a checkbox menu, or
- // an un-checked radio menu
- // aEvent is null if called from ::Enter(), we do want to flip our check
- // in that case
- if (mType == eMenuType_Checkbox ||
- (mType == eMenuType_Radio && !mChecked)) {
+ // flip "checked" state if we're a checkbox menu, or an un-checked radio menu
+ if (mType == eMenuType_Checkbox || (mType == eMenuType_Radio && !mChecked)) {
+ nsAutoString value;
+ mContent->GetAttr(kNameSpaceID_None, nsHTMLAtoms::autocheck, value);
+ if (!value.Equals(NS_LITERAL_STRING("false"))) {
if (mChecked) {
mContent->UnsetAttr(kNameSpaceID_None, nsHTMLAtoms::checked,
PR_TRUE);