diff --git a/xpfe/appshell/public/nsIXULCommand.h b/xpfe/appshell/public/nsIXULCommand.h
index 63633777fdd4f978722ae261a36c037255f35bc7..9f3d86f4ef845a207c35c96b2214fae942ff58fa 100644
--- a/xpfe/appshell/public/nsIXULCommand.h
+++ b/xpfe/appshell/public/nsIXULCommand.h
@@ -38,7 +38,7 @@ class nsIFactory;
 //----------------------------------------------------------------------
 
 
-class nsIXULCommand : public nsISupports {
+class nsIXULCommand : public nsIMenuListener {
 public:
 
   static const nsIID& IID() { static nsIID iid = NS_IXULCOMMAND_IID; return iid; }
diff --git a/xpfe/appshell/src/nsXULCommand.cpp b/xpfe/appshell/src/nsXULCommand.cpp
index ece940db0e742a95bc5bb342c04e26dd49886504..3151db332df3d339c6775632daa813c95e9325b1 100644
--- a/xpfe/appshell/src/nsXULCommand.cpp
+++ b/xpfe/appshell/src/nsXULCommand.cpp
@@ -345,6 +345,13 @@ nsresult nsXULCommand::KeyPress(nsIDOMEvent* aKeyEvent)
 {
   return NS_OK;
 }
+  
+
+nsEventStatus nsXULCommand::MenuSelected(const nsMenuEvent & aMenuEvent)
+{
+  DoCommand();
+  return nsEventStatus_eIgnore;//nsEventStatus_eConsumeNoDefault;
+}
 
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------
diff --git a/xpfe/appshell/src/nsXULCommand.h b/xpfe/appshell/src/nsXULCommand.h
index 91e0e0f7d7a41452d1b79e217f414ad9cbbe8f09..d685df606a3222f87ced5b4efc65e8a9ce5066fe 100644
--- a/xpfe/appshell/src/nsXULCommand.h
+++ b/xpfe/appshell/src/nsXULCommand.h
@@ -88,6 +88,8 @@ public:
   virtual nsresult KeyUp(nsIDOMEvent* aKeyEvent);
   virtual nsresult KeyPress(nsIDOMEvent* aKeyEvent);
 
+  // nsIMenuListener 
+  virtual nsEventStatus MenuSelected(const nsMenuEvent & aMenuEvent);
 
 protected:
   NS_IMETHOD ExecuteJavaScriptString(nsIWebShell* aWebShell, nsString& aJavaScript);