зеркало из https://github.com/mozilla/gecko-dev.git
Bug 460001, r+sr=sicking
This commit is contained in:
Родитель
a38f4c83cd
Коммит
34ff4e39e0
|
@ -1059,7 +1059,7 @@ nsresult
|
|||
nsEventListenerManager::HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
nsIDOMEventListener* aListener,
|
||||
nsIDOMEvent* aDOMEvent,
|
||||
nsISupports* aCurrentTarget,
|
||||
nsPIDOMEventTarget* aCurrentTarget,
|
||||
PRUint32 aPhaseFlags)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
|
@ -1083,7 +1083,10 @@ nsEventListenerManager::HandleEventSubType(nsListenerStruct* aListenerStruct,
|
|||
}
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
// nsCxPusher will push and pop (automatically) the current cx onto the
|
||||
// context stack
|
||||
nsCxPusher pusher;
|
||||
if (NS_SUCCEEDED(result) && pusher.Push(aCurrentTarget)) {
|
||||
// nsIDOMEvent::currentTarget is set in nsEventDispatcher.
|
||||
result = aListener->HandleEvent(aDOMEvent);
|
||||
}
|
||||
|
@ -1163,10 +1166,6 @@ found:
|
|||
nsAutoTObserverArray<nsListenerStruct, 2>::EndLimitedIterator iter(mListeners);
|
||||
nsAutoPopupStatePusher popupStatePusher(nsDOMEvent::GetEventPopupControlState(aEvent));
|
||||
PRBool hasListener = PR_FALSE;
|
||||
// nsCxPusher will push and pop (automatically) the current cx onto the
|
||||
// context stack
|
||||
nsCxPusher pusher;
|
||||
PRBool didPush = PR_FALSE;
|
||||
while (iter.HasMore()) {
|
||||
nsListenerStruct* ls = &iter.GetNext();
|
||||
PRBool useTypeInterface =
|
||||
|
@ -1190,14 +1189,9 @@ found:
|
|||
if (*aDOMEvent) {
|
||||
nsRefPtr<nsIDOMEventListener> kungFuDeathGrip = ls->mListener;
|
||||
if (useTypeInterface) {
|
||||
if (didPush) {
|
||||
didPush = PR_FALSE;
|
||||
pusher.Pop();
|
||||
}
|
||||
DispatchToInterface(*aDOMEvent, ls->mListener,
|
||||
dispData->method, *typeData->iid);
|
||||
} else if (useGenericInterface &&
|
||||
(didPush || (didPush = pusher.Push(aCurrentTarget)))) {
|
||||
} else if (useGenericInterface) {
|
||||
HandleEventSubType(ls, ls->mListener, *aDOMEvent,
|
||||
aCurrentTarget, aFlags);
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ protected:
|
|||
nsresult HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
nsIDOMEventListener* aListener,
|
||||
nsIDOMEvent* aDOMEvent,
|
||||
nsISupports* aCurrentTarget,
|
||||
nsPIDOMEventTarget* aCurrentTarget,
|
||||
PRUint32 aPhaseFlags);
|
||||
nsresult CompileEventHandlerInternal(nsIScriptContext *aContext,
|
||||
void *aScopeObject,
|
||||
|
|
Загрузка…
Ссылка в новой задаче