Bug 664058: Remove Add/RemoveEventListenerByIID from nsMenuBarListener. r=smaug

This commit is contained in:
Jonas Sicking 2011-06-30 14:20:02 -07:00
parent e7aebf77db
commit c433e9bba4
3 changed files with 46 additions and 81 deletions

View File

@ -114,14 +114,14 @@ nsMenuBarFrame::Init(nsIContent* aContent,
// Also hook up the listener to the window listening for focus events. This is so we can keep proper
// state as the user alt-tabs through processes.
target->AddEventListener(NS_LITERAL_STRING("keypress"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("keydown"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("keyup"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("keypress"), mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("keydown"), mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("keyup"), mMenuBarListener, PR_FALSE);
// mousedown event should be handled in all phase
target->AddEventListener(NS_LITERAL_STRING("mousedown"), (nsIDOMMouseListener*)mMenuBarListener, PR_TRUE);
target->AddEventListener(NS_LITERAL_STRING("mousedown"), (nsIDOMMouseListener*)mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("blur"), (nsIDOMFocusListener*)mMenuBarListener, PR_TRUE);
target->AddEventListener(NS_LITERAL_STRING("mousedown"), mMenuBarListener, PR_TRUE);
target->AddEventListener(NS_LITERAL_STRING("mousedown"), mMenuBarListener, PR_FALSE);
target->AddEventListener(NS_LITERAL_STRING("blur"), mMenuBarListener, PR_TRUE);
return rv;
}
@ -462,13 +462,13 @@ nsMenuBarFrame::DestroyFrom(nsIFrame* aDestructRoot)
if (pm)
pm->SetActiveMenuBar(this, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keypress"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keydown"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keyup"), (nsIDOMKeyListener*)mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keypress"), mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keydown"), mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("keyup"), mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("mousedown"), (nsIDOMMouseListener*)mMenuBarListener, PR_TRUE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("mousedown"), (nsIDOMMouseListener*)mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("blur"), (nsIDOMFocusListener*)mMenuBarListener, PR_TRUE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("mousedown"), mMenuBarListener, PR_TRUE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("mousedown"), mMenuBarListener, PR_FALSE);
mTarget->RemoveEventListener(NS_LITERAL_STRING("blur"), mMenuBarListener, PR_TRUE);
NS_IF_RELEASE(mMenuBarListener);

View File

@ -41,8 +41,6 @@
#include "nsMenuBarListener.h"
#include "nsMenuBarFrame.h"
#include "nsMenuPopupFrame.h"
#include "nsIDOMKeyListener.h"
#include "nsIDOMEventListener.h"
#include "nsIDOMNSUIEvent.h"
#include "nsIDOMNSEvent.h"
#include "nsGUIEvent.h"
@ -65,14 +63,7 @@ using namespace mozilla;
* nsMenuBarListener implementation
*/
NS_IMPL_ADDREF(nsMenuBarListener)
NS_IMPL_RELEASE(nsMenuBarListener)
NS_INTERFACE_MAP_BEGIN(nsMenuBarListener)
NS_INTERFACE_MAP_ENTRY(nsIDOMKeyListener)
NS_INTERFACE_MAP_ENTRY(nsIDOMFocusListener)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsIDOMEventListener,nsIDOMMouseListener)
NS_INTERFACE_MAP_ENTRY(nsIDOMMouseListener)
NS_INTERFACE_MAP_END
NS_IMPL_ISUPPORTS1(nsMenuBarListener, nsIDOMEventListener)
#define MODIFIER_SHIFT 1
#define MODIFIER_CONTROL 2
@ -375,13 +366,6 @@ nsMenuBarListener::KeyDown(nsIDOMEvent* aKeyEvent)
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::Focus(nsIDOMEvent* aEvent)
{
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::Blur(nsIDOMEvent* aEvent)
{
@ -420,43 +404,30 @@ nsMenuBarListener::MouseDown(nsIDOMEvent* aMouseEvent)
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::MouseUp(nsIDOMEvent* aMouseEvent)
{
return NS_OK; // means I am NOT consuming event
}
nsresult
nsMenuBarListener::MouseClick(nsIDOMEvent* aMouseEvent)
{
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::MouseDblClick(nsIDOMEvent* aMouseEvent)
{
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::MouseOver(nsIDOMEvent* aMouseEvent)
{
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::MouseOut(nsIDOMEvent* aMouseEvent)
{
return NS_OK; // means I am NOT consuming event
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuBarListener::HandleEvent(nsIDOMEvent* aEvent)
{
nsAutoString eventType;
aEvent->GetType(eventType);
if (eventType.EqualsLiteral("keyup")) {
return KeyUp(aEvent);
}
if (eventType.EqualsLiteral("keydown")) {
return KeyDown(aEvent);
}
if (eventType.EqualsLiteral("keypress")) {
return KeyPress(aEvent);
}
if (eventType.EqualsLiteral("blur")) {
return Blur(aEvent);
}
if (eventType.EqualsLiteral("mousedown")) {
return MouseDown(aEvent);
}
NS_ABORT();
return NS_OK;
}

View File

@ -38,18 +38,20 @@
#ifndef nsMenuBarListener_h__
#define nsMenuBarListener_h__
#include "nsIDOMMouseMotionListener.h"
#include "nsIDOMMouseListener.h"
#include "nsIDOMKeyListener.h"
#include "nsIDOMFocusListener.h"
#include "nsIDOMEventListener.h"
#include "nsIDOMEventTarget.h"
// X.h defines KeyPress
#ifdef KeyPress
#undef KeyPress
#endif
class nsMenuBarFrame;
class nsIDOMKeyEvent;
/** editor Implementation of the DragListener interface
*/
class nsMenuBarListener : public nsIDOMKeyListener, public nsIDOMFocusListener, public nsIDOMMouseListener
class nsMenuBarListener : public nsIDOMEventListener
{
public:
/** default constructor
@ -61,19 +63,11 @@ public:
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
NS_IMETHOD KeyUp(nsIDOMEvent* aMouseEvent);
NS_IMETHOD KeyDown(nsIDOMEvent* aMouseEvent);
NS_IMETHOD KeyPress(nsIDOMEvent* aMouseEvent);
NS_IMETHOD Focus(nsIDOMEvent* aEvent);
NS_IMETHOD Blur(nsIDOMEvent* aEvent);
NS_IMETHOD MouseDown(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseUp(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseClick(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseDblClick(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseOver(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseOut(nsIDOMEvent* aMouseEvent);
nsresult KeyUp(nsIDOMEvent* aMouseEvent);
nsresult KeyDown(nsIDOMEvent* aMouseEvent);
nsresult KeyPress(nsIDOMEvent* aMouseEvent);
nsresult Blur(nsIDOMEvent* aEvent);
nsresult MouseDown(nsIDOMEvent* aMouseEvent);
static nsresult GetMenuAccessKey(PRInt32* aAccessKey);