Bug 970220 - Set relatedTarget property of all pointer events to null after invoking the setPointerCapture method on an element. r=smaug

This commit is contained in:
Maksim Lebedev 2014-04-22 13:59:39 -07:00
Родитель 3b76d91c36
Коммит d25fe4c190
1 изменённых файлов: 8 добавлений и 7 удалений

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

@ -3534,12 +3534,11 @@ EventStateManager::DispatchMouseOrPointerEvent(WidgetMouseEvent* aMouseEvent,
}
nsEventStatus status = nsEventStatus_eIgnore;
nsAutoPtr<WidgetPointerEvent> newPointerEvent;
nsAutoPtr<WidgetMouseEvent> newMouseEvent;
WidgetMouseEvent* event = nullptr;
nsAutoPtr<WidgetMouseEvent> event;
WidgetPointerEvent* sourcePointer = aMouseEvent->AsPointerEvent();
if (sourcePointer) {
PROFILER_LABEL("Input", "DispatchPointerEvent");
nsAutoPtr<WidgetPointerEvent> newPointerEvent;
newPointerEvent =
new WidgetPointerEvent(aMouseEvent->mFlags.mIsTrusted, aMessage,
aMouseEvent->widget);
@ -3548,20 +3547,22 @@ EventStateManager::DispatchMouseOrPointerEvent(WidgetMouseEvent* aMouseEvent,
newPointerEvent->width = sourcePointer->width;
newPointerEvent->height = sourcePointer->height;
newPointerEvent->inputSource = sourcePointer->inputSource;
event = newPointerEvent.get();
newPointerEvent->relatedTarget = nsIPresShell::GetPointerCapturingContent(sourcePointer->pointerId)
? nullptr
: aRelatedContent;
event = newPointerEvent.forget();
} else {
PROFILER_LABEL("Input", "DispatchMouseEvent");
newMouseEvent =
event =
new WidgetMouseEvent(aMouseEvent->mFlags.mIsTrusted, aMessage,
aMouseEvent->widget, WidgetMouseEvent::eReal);
event = newMouseEvent.get();
event->relatedTarget = aRelatedContent;
}
event->refPoint = aMouseEvent->refPoint;
event->modifiers = aMouseEvent->modifiers;
event->button = aMouseEvent->button;
event->buttons = aMouseEvent->buttons;
event->pluginEvent = aMouseEvent->pluginEvent;
event->relatedTarget = aRelatedContent;
event->inputSource = aMouseEvent->inputSource;
nsWeakFrame previousTarget = mCurrentTarget;