зеркало из https://github.com/mozilla/gecko-dev.git
Bug 985511 - When a pointing device that supports hover leaves the range of the digitizer while over an element, the pointerleave event must be dispatched. r=smaug
This commit is contained in:
Родитель
d395a5dc16
Коммит
9b75714ddd
|
@ -2872,6 +2872,9 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
|
|||
if (pointerEvent->inputSource == nsIDOMMouseEvent::MOZ_SOURCE_TOUCH) {
|
||||
mPointersEnterLeaveHelper.Remove(pointerEvent->pointerId);
|
||||
}
|
||||
if (pointerEvent->inputSource != nsIDOMMouseEvent::MOZ_SOURCE_MOUSE) {
|
||||
GenerateMouseEnterExit(pointerEvent);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NS_MOUSE_BUTTON_UP:
|
||||
|
@ -3928,6 +3931,25 @@ EventStateManager::GenerateMouseEnterExit(WidgetMouseEvent* aMouseEvent)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case NS_POINTER_UP:
|
||||
{
|
||||
// Get the target content target (mousemove target == mouseover target)
|
||||
nsCOMPtr<nsIContent> targetElement = GetEventTargetContent(aMouseEvent);
|
||||
if (!targetElement) {
|
||||
// We're always over the document root, even if we're only
|
||||
// over dead space in a page (whose frame is not associated with
|
||||
// any content) or in print preview dead space
|
||||
targetElement = mDocument->GetRootElement();
|
||||
}
|
||||
if (targetElement) {
|
||||
OverOutElementsWrapper* helper = GetWrapperByEventID(aMouseEvent);
|
||||
if (helper) {
|
||||
helper->mLastOverElement = targetElement;
|
||||
}
|
||||
NotifyMouseOut(aMouseEvent, nullptr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NS_POINTER_LEAVE:
|
||||
case NS_POINTER_CANCEL:
|
||||
case NS_MOUSE_EXIT:
|
||||
|
|
Загрузка…
Ссылка в новой задаче