From 7ace0d291a1efc090f72f0b4ac7f8040e2e44e5b Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" Date: Fri, 8 Sep 2000 06:59:14 +0000 Subject: [PATCH] Binding detached. r=pavlov --- dom/src/base/nsGlobalWindow.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dom/src/base/nsGlobalWindow.cpp b/dom/src/base/nsGlobalWindow.cpp index f276588ed3a2..2b21470aac99 100644 --- a/dom/src/base/nsGlobalWindow.cpp +++ b/dom/src/base/nsGlobalWindow.cpp @@ -100,10 +100,10 @@ #include "nsDOMCID.h" #include "nsDOMError.h" -// XXX An unfortunate dependency exists here. +// XXX An unfortunate dependency exists here (two for XUL, one for XBL). #include "nsIDOMXULDocument.h" #include "nsIDOMXULCommandDispatcher.h" - +#include "nsIBindingManager.h" // CIDs static NS_DEFINE_IID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); @@ -437,6 +437,16 @@ NS_IMETHODIMP GlobalWindowImpl::HandleDOMEvent(nsIPresContext* aPresContext, } aEvent->flags = aFlags; aFlags &= ~(NS_EVENT_FLAG_CANT_BUBBLE | NS_EVENT_FLAG_CANT_CANCEL); + + // Execute bindingdetached handlers before we tear ourselves + // down. + if (aEvent->message == NS_PAGE_UNLOAD && mDocument) { + nsCOMPtr doc(do_QueryInterface(mDocument)); + nsCOMPtr bindingManager; + doc->GetBindingManager(getter_AddRefs(bindingManager)); + if (bindingManager) + bindingManager->ExecuteDetachedHandlers(); + } } // Capturing stage