void Event::InitPresContextData(nsPresContext* aPresContext) { mPresContext = aPresContext; // Get the explicit original target (if it's anonymous make it null) { nsCOMPtr<nsIContent> content = GetTargetFromFrame(); mExplicitOriginalTarget = content; if (content && content->IsInAnonymousSubtree()) { mExplicitOriginalTarget = nullptr; } } }
nsDOMEvent::nsDOMEvent(nsPresContext* aPresContext, nsEvent* aEvent) { mPresContext = aPresContext; mPrivateDataDuplicated = PR_FALSE; if (aEvent) { mEvent = aEvent; mEventIsInternal = PR_FALSE; } else { mEventIsInternal = PR_TRUE; /* A derived class might want to allocate its own type of aEvent (derived from nsEvent). To do this, it should take care to pass a non-NULL aEvent to this ctor, e.g.: nsDOMFooEvent::nsDOMFooEvent(..., nsEvent* aEvent) : nsDOMEvent(..., aEvent ? aEvent : new nsFooEvent()) Then, to override the mEventIsInternal assignments done by the base ctor, it should do this in its own ctor: nsDOMFooEvent::nsDOMFooEvent(..., nsEvent* aEvent) ... { ... if (aEvent) { mEventIsInternal = PR_FALSE; } else { mEventIsInternal = PR_TRUE; } ... } */ mEvent = new nsEvent(PR_FALSE, 0); mEvent->time = PR_Now(); } // Get the explicit original target (if it's anonymous make it null) { nsCOMPtr<nsIContent> content = GetTargetFromFrame(); mTmpRealOriginalTarget = do_QueryInterface(content); mExplicitOriginalTarget = mTmpRealOriginalTarget; if (content && content->IsInAnonymousSubtree()) { mExplicitOriginalTarget = nsnull; } } NS_ASSERTION(mEvent->message != NS_PAINT, "Trying to create a DOM paint event!"); }