WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, const LayoutObject* layoutObject, const MouseEvent& event) { if (event.type() == EventTypeNames::mousemove) type = WebInputEvent::MouseMove; else if (event.type() == EventTypeNames::mouseout) type = WebInputEvent::MouseLeave; else if (event.type() == EventTypeNames::mouseover) type = WebInputEvent::MouseEnter; else if (event.type() == EventTypeNames::mousedown) type = WebInputEvent::MouseDown; else if (event.type() == EventTypeNames::mouseup) type = WebInputEvent::MouseUp; else if (event.type() == EventTypeNames::contextmenu) type = WebInputEvent::ContextMenu; else return; // Skip all other mouse events. updateWebMouseEventFromCoreMouseEvent(event, widget, *layoutObject, *this); switch (event.button()) { case LeftButton: button = WebMouseEvent::ButtonLeft; break; case MiddleButton: button = WebMouseEvent::ButtonMiddle; break; case RightButton: button = WebMouseEvent::ButtonRight; break; } if (event.buttonDown()) { switch (event.button()) { case LeftButton: modifiers |= WebInputEvent::LeftButtonDown; break; case MiddleButton: modifiers |= WebInputEvent::MiddleButtonDown; break; case RightButton: modifiers |= WebInputEvent::RightButtonDown; break; } } else button = WebMouseEvent::ButtonNone; movementX = event.movementX(); movementY = event.movementY(); clickCount = event.detail(); pointerType = WebPointerProperties::PointerType::Mouse; }
WebMouseWheelEventBuilder::WebMouseWheelEventBuilder(const Widget* widget, const LayoutObject* layoutObject, const WheelEvent& event) { if (event.type() != EventTypeNames::wheel && event.type() != EventTypeNames::mousewheel) return; type = WebInputEvent::MouseWheel; updateWebMouseEventFromCoreMouseEvent(event, widget, *layoutObject, *this); deltaX = -event.deltaX(); deltaY = -event.deltaY(); wheelTicksX = event.ticksX(); wheelTicksY = event.ticksY(); scrollByPage = event.deltaMode() == WheelEvent::DOM_DELTA_PAGE; canScroll = event.canScroll(); railsMode = static_cast<RailsMode>(event.railsMode()); }