From 08e968606d3306509d04af271c03729a1993f1f4 Mon Sep 17 00:00:00 2001 From: "brade%netscape.com" Date: Thu, 20 Jul 2000 14:32:30 +0000 Subject: [PATCH] check if events have been handled already before dispatching them; r=saari; bug #45390 --- content/xbl/src/nsXBLEventHandler.cpp | 10 ++++++++++ layout/xbl/src/nsXBLEventHandler.cpp | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/content/xbl/src/nsXBLEventHandler.cpp b/content/xbl/src/nsXBLEventHandler.cpp index 94ddb0ad223..fccc6a1d4fd 100644 --- a/content/xbl/src/nsXBLEventHandler.cpp +++ b/content/xbl/src/nsXBLEventHandler.cpp @@ -44,6 +44,7 @@ #include "nsIEventListenerManager.h" #include "nsIDOMEventReceiver.h" #include "nsXBLBinding.h" +#include "nsIPrivateDOMEvent.h" PRUint32 nsXBLEventHandler::gRefCnt = 0; nsIAtom* nsXBLEventHandler::kKeyCodeAtom = nsnull; @@ -555,6 +556,15 @@ nsXBLEventHandler::ExecuteHandler(const nsString& aEventName, nsIDOMEvent* aEven // Stop any other default action from executing. aEvent->PreventDefault(); + nsCOMPtr privateEvent = do_QueryInterface(aEvent); + if(privateEvent) + { + PRBool dispatchStopped; + privateEvent->IsDispatchStopped(&dispatchStopped); + if(dispatchStopped) + return NS_OK; + } + // Instead of executing JS, let's get the controller for the bound // element and call doCommand on it. nsCOMPtr controller; diff --git a/layout/xbl/src/nsXBLEventHandler.cpp b/layout/xbl/src/nsXBLEventHandler.cpp index 94ddb0ad223..fccc6a1d4fd 100644 --- a/layout/xbl/src/nsXBLEventHandler.cpp +++ b/layout/xbl/src/nsXBLEventHandler.cpp @@ -44,6 +44,7 @@ #include "nsIEventListenerManager.h" #include "nsIDOMEventReceiver.h" #include "nsXBLBinding.h" +#include "nsIPrivateDOMEvent.h" PRUint32 nsXBLEventHandler::gRefCnt = 0; nsIAtom* nsXBLEventHandler::kKeyCodeAtom = nsnull; @@ -555,6 +556,15 @@ nsXBLEventHandler::ExecuteHandler(const nsString& aEventName, nsIDOMEvent* aEven // Stop any other default action from executing. aEvent->PreventDefault(); + nsCOMPtr privateEvent = do_QueryInterface(aEvent); + if(privateEvent) + { + PRBool dispatchStopped; + privateEvent->IsDispatchStopped(&dispatchStopped); + if(dispatchStopped) + return NS_OK; + } + // Instead of executing JS, let's get the controller for the bound // element and call doCommand on it. nsCOMPtr controller;