bool WidgetEvent::IsAllowedToDispatchDOMEvent() const { switch (eventStructType) { case NS_MOUSE_EVENT: case NS_POINTER_EVENT: // We want synthesized mouse moves to cause mouseover and mouseout // DOM events (nsEventStateManager::PreHandleEvent), but not mousemove // DOM events. // Synthesized button up events also do not cause DOM events because they // do not have a reliable refPoint. return AsMouseEvent()->reason == WidgetMouseEvent::eReal; case NS_WHEEL_EVENT: { // wheel event whose all delta values are zero by user pref applied, it // shouldn't cause a DOM event. const WidgetWheelEvent* wheelEvent = AsWheelEvent(); return wheelEvent->deltaX != 0.0 || wheelEvent->deltaY != 0.0 || wheelEvent->deltaZ != 0.0; } default: return true; } }
bool WidgetEvent::IsAllowedToDispatchDOMEvent() const { switch (mClass) { case eMouseEventClass: case ePointerEventClass: // We want synthesized mouse moves to cause mouseover and mouseout // DOM events (EventStateManager::PreHandleEvent), but not mousemove // DOM events. // Synthesized button up events also do not cause DOM events because they // do not have a reliable refPoint. return AsMouseEvent()->reason == WidgetMouseEvent::eReal; case eWheelEventClass: { // wheel event whose all delta values are zero by user pref applied, it // shouldn't cause a DOM event. const WidgetWheelEvent* wheelEvent = AsWheelEvent(); return wheelEvent->deltaX != 0.0 || wheelEvent->deltaY != 0.0 || wheelEvent->deltaZ != 0.0; } // Following events are handled in EventStateManager, so, we don't need to // dispatch DOM event for them into the DOM tree. case eQueryContentEventClass: case eSelectionEventClass: case eContentCommandEventClass: return false; default: return true; } }
bool WidgetEvent::IsAllowedToDispatchDOMEvent() const { switch (mClass) { case eMouseEventClass: // When content PreventDefault on ePointerDown, we will stop dispatching // the subsequent mouse events (eMouseDown, eMouseUp, eMouseMove). But we // still need the mouse events to be handled in EventStateManager to // generate other events (e.g. eMouseClick). So we only stop dispatching // them to DOM. if (DefaultPreventedByContent() && (mMessage == eMouseMove || mMessage == eMouseDown || mMessage == eMouseUp)) { return false; } if (mMessage == eMouseTouchDrag) { return false; } MOZ_FALLTHROUGH; case ePointerEventClass: // We want synthesized mouse moves to cause mouseover and mouseout // DOM events (EventStateManager::PreHandleEvent), but not mousemove // DOM events. // Synthesized button up events also do not cause DOM events because they // do not have a reliable mRefPoint. return AsMouseEvent()->mReason == WidgetMouseEvent::eReal; case eWheelEventClass: { // wheel event whose all delta values are zero by user pref applied, it // shouldn't cause a DOM event. const WidgetWheelEvent* wheelEvent = AsWheelEvent(); return wheelEvent->mDeltaX != 0.0 || wheelEvent->mDeltaY != 0.0 || wheelEvent->mDeltaZ != 0.0; } case eTouchEventClass: return mMessage != eTouchPointerCancel; // Following events are handled in EventStateManager, so, we don't need to // dispatch DOM event for them into the DOM tree. case eQueryContentEventClass: case eSelectionEventClass: case eContentCommandEventClass: return false; default: return true; } }