rest of Bug 339774, nsDOMEvent::DuplicatePrivateData should copy more things from the original event, r+sr=bz

This commit is contained in:
Olli.Pettay%helsinki.fi 2006-06-05 18:38:54 +00:00
Родитель 156339d5b5
Коммит aa3c59a622
4 изменённых файлов: 21 добавлений и 5 удалений

Просмотреть файл

@ -135,7 +135,7 @@ nsDOMEvent::~nsDOMEvent()
{
NS_ASSERT_OWNINGTHREAD(nsDOMEvent);
if (mEventIsInternal) {
if (mEventIsInternal && mEvent) {
delete mEvent->userType;
delete mEvent;
}
@ -687,14 +687,13 @@ NS_METHOD nsDOMEvent::DuplicatePrivateData()
{
nsMutationEvent* mutationEvent = new nsMutationEvent(PR_FALSE, msg);
NS_ENSURE_TRUE(mutationEvent, NS_ERROR_OUT_OF_MEMORY);
/* Disabling for now. This creates some leaks.
nsMutationEvent* oldMutationEvent =
NS_STATIC_CAST(nsMutationEvent*, mEvent);
mutationEvent->mRelatedNode = oldMutationEvent->mRelatedNode;
mutationEvent->mAttrName = oldMutationEvent->mAttrName;
mutationEvent->mPrevAttrValue = oldMutationEvent->mPrevAttrValue;
mutationEvent->mNewAttrValue = oldMutationEvent->mNewAttrValue;
mutationEvent->mAttrChange = oldMutationEvent->mAttrChange;*/
mutationEvent->mAttrChange = oldMutationEvent->mAttrChange;
newEvent = mutationEvent;
break;
}
@ -789,9 +788,8 @@ NS_METHOD nsDOMEvent::DuplicatePrivateData()
NS_ENSURE_TRUE(newEvent, NS_ERROR_OUT_OF_MEMORY);
isInputEvent = PR_TRUE;
newEvent->eventStructType = NS_XUL_COMMAND_EVENT;
/* Disabling for now. This creates some leaks.
NS_STATIC_CAST(nsXULCommandEvent*, newEvent)->sourceEvent =
NS_STATIC_CAST(nsXULCommandEvent*, mEvent)->sourceEvent; */
NS_STATIC_CAST(nsXULCommandEvent*, mEvent)->sourceEvent;
break;
}
default:

Просмотреть файл

@ -50,6 +50,16 @@ nsDOMMutationEvent::nsDOMMutationEvent(nsPresContext* aPresContext,
mEventIsInternal = (aEvent == nsnull);
}
nsDOMMutationEvent::~nsDOMMutationEvent()
{
if (mEventIsInternal) {
delete mEvent->userType;
nsMutationEvent* mutation = NS_STATIC_CAST(nsMutationEvent*, mEvent);
delete mutation;
mEvent = nsnull;
}
}
NS_INTERFACE_MAP_BEGIN(nsDOMMutationEvent)
NS_INTERFACE_MAP_ENTRY(nsIDOMMutationEvent)
NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(MutationEvent)

Просмотреть файл

@ -49,6 +49,8 @@ class nsDOMMutationEvent : public nsIDOMMutationEvent,
{
public:
nsDOMMutationEvent(nsPresContext* aPresContext, nsMutationEvent* aEvent);
virtual ~nsDOMMutationEvent();
NS_DECL_ISUPPORTS_INHERITED

Просмотреть файл

@ -55,6 +55,12 @@ nsDOMXULCommandEvent::nsDOMXULCommandEvent(nsPresContext* aPresContext,
nsDOMXULCommandEvent::~nsDOMXULCommandEvent()
{
if (mEventIsInternal) {
delete mEvent->userType;
nsXULCommandEvent* command = NS_STATIC_CAST(nsXULCommandEvent*, mEvent);
delete command;
mEvent = nsnull;
}
}
NS_IMPL_ADDREF_INHERITED(nsDOMXULCommandEvent, nsDOMUIEvent)