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