From 1605014d5ef5e7f82e52610f2cc0a3702865ac32 Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" Date: Tue, 8 Jun 1999 05:10:13 +0000 Subject: [PATCH] Added construct and destruct events to the DOM. --- content/events/src/nsDOMEvent.cpp | 7 ++++++- content/events/src/nsDOMEvent.h | 4 +++- content/events/src/nsEventListenerManager.cpp | 20 +++++++++++++++++++ content/events/src/nsEventListenerManager.h | 2 ++ layout/events/src/nsDOMEvent.cpp | 7 ++++++- layout/events/src/nsDOMEvent.h | 4 +++- layout/events/src/nsEventListenerManager.cpp | 20 +++++++++++++++++++ layout/events/src/nsEventListenerManager.h | 2 ++ 8 files changed, 62 insertions(+), 4 deletions(-) diff --git a/content/events/src/nsDOMEvent.cpp b/content/events/src/nsDOMEvent.cpp index 86441362c010..dc8b1f2410f9 100644 --- a/content/events/src/nsDOMEvent.cpp +++ b/content/events/src/nsDOMEvent.cpp @@ -36,7 +36,8 @@ static char* mEventNames[] = { "mousedown", "mouseup", "click", "dblclick", "mouseover", "mouseout", "mousemove", "keydown", "keyup", "keypress", "focus", "blur", "load", "unload", "abort", "error", - "submit", "reset", "change", "paint" ,"text" + "submit", "reset", "change", "paint" ,"text", + "construct", "destruct" }; nsDOMEvent::nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent) { @@ -471,6 +472,10 @@ const char* nsDOMEvent::GetEventName(PRUint32 aEventType) return mEventNames[eDOMEvents_paint]; case NS_TEXT_EVENT: return mEventNames[eDOMEvents_text]; + case NS_POPUP_CONSTRUCT: + return mEventNames[eDOMEvents_construct]; + case NS_POPUP_DESTRUCT: + return mEventNames[eDOMEvents_destruct]; default: break; } diff --git a/content/events/src/nsDOMEvent.h b/content/events/src/nsDOMEvent.h index 1730a5887450..519c50b3a75c 100644 --- a/content/events/src/nsDOMEvent.h +++ b/content/events/src/nsDOMEvent.h @@ -56,7 +56,9 @@ public: eDOMEvents_reset, eDOMEvents_change, eDOMEvents_paint, - eDOMEvents_text + eDOMEvents_text, + eDOMEvents_construct, + eDOMEvents_destruct }; nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent); diff --git a/content/events/src/nsEventListenerManager.cpp b/content/events/src/nsEventListenerManager.cpp index f66e58029572..510e1d6baeb4 100644 --- a/content/events/src/nsEventListenerManager.cpp +++ b/content/events/src/nsEventListenerManager.cpp @@ -340,6 +340,14 @@ nsresult nsEventListenerManager::GetIdentifiersForType(const nsString& aType, ns aIID = kIDOMPaintListenerIID; *aFlags = NS_EVENT_BITS_PAINT_PAINT; } // extened this to handle IME related events + else if (aType == "construct") { + aIID = kIDOMLoadListenerIID; + *aFlags = NS_EVENT_BITS_LOAD_CONSTRUCT; + } + else if (aType == "destruct") { + aIID = kIDOMLoadListenerIID; + *aFlags = NS_EVENT_BITS_LOAD_DESTRUCT; + } else { return NS_ERROR_FAILURE; } @@ -883,6 +891,8 @@ nsresult nsEventListenerManager::HandleEvent(nsIPresContext& aPresContext, case NS_PAGE_LOAD: case NS_PAGE_UNLOAD: + case NS_POPUP_CONSTRUCT: + case NS_POPUP_DESTRUCT: if (nsnull != mLoadListeners) { if (nsnull == *aDOMEvent) { ret = NS_NewDOMUIEvent(aDOMEvent, aPresContext, aEvent); @@ -921,6 +931,16 @@ nsresult nsEventListenerManager::HandleEvent(nsIPresContext& aPresContext, correctSubType = PR_TRUE; } break; + case NS_POPUP_CONSTRUCT: + if (ls->mSubType & NS_EVENT_BITS_LOAD_CONSTRUCT) { + correctSubType = PR_TRUE; + } + break; + case NS_POPUP_DESTRUCT: + if (ls->mSubType & NS_EVENT_BITS_LOAD_DESTRUCT) { + correctSubType = PR_TRUE; + } + break; default: break; } diff --git a/content/events/src/nsEventListenerManager.h b/content/events/src/nsEventListenerManager.h index 8b2195741c37..bbb951442650 100644 --- a/content/events/src/nsEventListenerManager.h +++ b/content/events/src/nsEventListenerManager.h @@ -161,6 +161,8 @@ protected: #define NS_EVENT_BITS_LOAD_UNLOAD 0x02 #define NS_EVENT_BITS_LOAD_ABORT 0x04 #define NS_EVENT_BITS_LOAD_ERROR 0x08 +#define NS_EVENT_BITS_LOAD_CONSTRUCT 0x10 +#define NS_EVENT_BITS_LOAD_DESTRUCT 0x20 //nsIDOMDragListener #define NS_EVENT_BITS_DRAG_NONE 0x00 diff --git a/layout/events/src/nsDOMEvent.cpp b/layout/events/src/nsDOMEvent.cpp index 86441362c010..dc8b1f2410f9 100644 --- a/layout/events/src/nsDOMEvent.cpp +++ b/layout/events/src/nsDOMEvent.cpp @@ -36,7 +36,8 @@ static char* mEventNames[] = { "mousedown", "mouseup", "click", "dblclick", "mouseover", "mouseout", "mousemove", "keydown", "keyup", "keypress", "focus", "blur", "load", "unload", "abort", "error", - "submit", "reset", "change", "paint" ,"text" + "submit", "reset", "change", "paint" ,"text", + "construct", "destruct" }; nsDOMEvent::nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent) { @@ -471,6 +472,10 @@ const char* nsDOMEvent::GetEventName(PRUint32 aEventType) return mEventNames[eDOMEvents_paint]; case NS_TEXT_EVENT: return mEventNames[eDOMEvents_text]; + case NS_POPUP_CONSTRUCT: + return mEventNames[eDOMEvents_construct]; + case NS_POPUP_DESTRUCT: + return mEventNames[eDOMEvents_destruct]; default: break; } diff --git a/layout/events/src/nsDOMEvent.h b/layout/events/src/nsDOMEvent.h index 1730a5887450..519c50b3a75c 100644 --- a/layout/events/src/nsDOMEvent.h +++ b/layout/events/src/nsDOMEvent.h @@ -56,7 +56,9 @@ public: eDOMEvents_reset, eDOMEvents_change, eDOMEvents_paint, - eDOMEvents_text + eDOMEvents_text, + eDOMEvents_construct, + eDOMEvents_destruct }; nsDOMEvent(nsIPresContext* aPresContext, nsEvent* aEvent); diff --git a/layout/events/src/nsEventListenerManager.cpp b/layout/events/src/nsEventListenerManager.cpp index f66e58029572..510e1d6baeb4 100644 --- a/layout/events/src/nsEventListenerManager.cpp +++ b/layout/events/src/nsEventListenerManager.cpp @@ -340,6 +340,14 @@ nsresult nsEventListenerManager::GetIdentifiersForType(const nsString& aType, ns aIID = kIDOMPaintListenerIID; *aFlags = NS_EVENT_BITS_PAINT_PAINT; } // extened this to handle IME related events + else if (aType == "construct") { + aIID = kIDOMLoadListenerIID; + *aFlags = NS_EVENT_BITS_LOAD_CONSTRUCT; + } + else if (aType == "destruct") { + aIID = kIDOMLoadListenerIID; + *aFlags = NS_EVENT_BITS_LOAD_DESTRUCT; + } else { return NS_ERROR_FAILURE; } @@ -883,6 +891,8 @@ nsresult nsEventListenerManager::HandleEvent(nsIPresContext& aPresContext, case NS_PAGE_LOAD: case NS_PAGE_UNLOAD: + case NS_POPUP_CONSTRUCT: + case NS_POPUP_DESTRUCT: if (nsnull != mLoadListeners) { if (nsnull == *aDOMEvent) { ret = NS_NewDOMUIEvent(aDOMEvent, aPresContext, aEvent); @@ -921,6 +931,16 @@ nsresult nsEventListenerManager::HandleEvent(nsIPresContext& aPresContext, correctSubType = PR_TRUE; } break; + case NS_POPUP_CONSTRUCT: + if (ls->mSubType & NS_EVENT_BITS_LOAD_CONSTRUCT) { + correctSubType = PR_TRUE; + } + break; + case NS_POPUP_DESTRUCT: + if (ls->mSubType & NS_EVENT_BITS_LOAD_DESTRUCT) { + correctSubType = PR_TRUE; + } + break; default: break; } diff --git a/layout/events/src/nsEventListenerManager.h b/layout/events/src/nsEventListenerManager.h index 8b2195741c37..bbb951442650 100644 --- a/layout/events/src/nsEventListenerManager.h +++ b/layout/events/src/nsEventListenerManager.h @@ -161,6 +161,8 @@ protected: #define NS_EVENT_BITS_LOAD_UNLOAD 0x02 #define NS_EVENT_BITS_LOAD_ABORT 0x04 #define NS_EVENT_BITS_LOAD_ERROR 0x08 +#define NS_EVENT_BITS_LOAD_CONSTRUCT 0x10 +#define NS_EVENT_BITS_LOAD_DESTRUCT 0x20 //nsIDOMDragListener #define NS_EVENT_BITS_DRAG_NONE 0x00