Bug 587944. Need to clear are target frame when we clear our target content. r=smaug a=blocking 130078 which blocks
--- a/content/events/src/nsEventStateManager.cpp
+++ b/content/events/src/nsEventStateManager.cpp
@@ -3287,16 +3287,17 @@ nsEventStateManager::PostHandleEvent(nsP
}
break;
#endif // ANDROID
#endif // MOZ_IPC
}
//Reset target frame to null to avoid mistargeting after reentrant event
mCurrentTarget = nsnull;
+ mCurrentTargetContent = nsnull;
return ret;
}
#ifdef MOZ_IPC
#ifdef ANDROID
mozilla::dom::PBrowserParent*
nsEventStateManager::GetCrossProcessTarget()
@@ -3606,32 +3607,34 @@ nsEventStateManager::DispatchMouseEvent(
event.isControl = ((nsMouseEvent*)aEvent)->isControl;
event.isAlt = ((nsMouseEvent*)aEvent)->isAlt;
event.isMeta = ((nsMouseEvent*)aEvent)->isMeta;
event.pluginEvent = ((nsMouseEvent*)aEvent)->pluginEvent;
event.relatedTarget = aRelatedContent;
event.inputSource = static_cast<nsMouseEvent*>(aEvent)->inputSource;
mCurrentTargetContent = aTargetContent;
+ mCurrentTarget = nsnull;
nsIFrame* targetFrame = nsnull;
if (aTargetContent) {
nsESMEventCB callback(aTargetContent);
nsEventDispatcher::Dispatch(aTargetContent, mPresContext, &event, nsnull,
&status, &callback);
// Although the primary frame was checked in event callback,
// it may not be the same object after event dispatching and handling.
// So we need to refetch it.
if (mPresContext) {
targetFrame = mPresContext->GetPrimaryFrameFor(aTargetContent);
}
}
mCurrentTargetContent = nsnull;
+ mCurrentTarget = nsnull;
return targetFrame;
}
void
nsEventStateManager::NotifyMouseOut(nsGUIEvent* aEvent, nsIContent* aMovingInto)
{
if (!mLastMouseOverElement)
@@ -3786,16 +3789,17 @@ nsEventStateManager::GenerateMouseEnterE
NotifyMouseOut(aEvent, nsnull);
}
break;
}
// reset mCurretTargetContent to what it was
mCurrentTargetContent = targetBeforeEvent;
+ mCurrentTarget = nsnull;
}
void
nsEventStateManager::GenerateDragDropEnterExit(nsPresContext* aPresContext,
nsGUIEvent* aEvent)
{
//Hold onto old target content through the event and reset after.
nsCOMPtr<nsIContent> targetBeforeEvent = mCurrentTargetContent;