WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, const WebCore::RenderObject* renderObject, const TouchEvent& event) { if (!event.touches()) return; if (event.touches()->length() != 1) { if (event.touches()->length() || event.type() != EventTypeNames::touchend || !event.changedTouches() || event.changedTouches()->length() != 1) return; } const Touch* touch = event.touches()->length() == 1 ? event.touches()->item(0) : event.changedTouches()->item(0); if (touch->identifier()) return; if (event.type() == EventTypeNames::touchstart) type = MouseDown; else if (event.type() == EventTypeNames::touchmove) type = MouseMove; else if (event.type() == EventTypeNames::touchend) type = MouseUp; else return; updateWebMouseEventFromWebCoreMouseEvent(event, *widget, *renderObject, *this); button = WebMouseEvent::ButtonLeft; modifiers |= WebInputEvent::LeftButtonDown; clickCount = (type == MouseDown || type == MouseUp); IntPoint localPoint = convertAbsoluteLocationForRenderObject(touch->absoluteLocation(), *renderObject); x = localPoint.x(); y = localPoint.y(); }
WebMouseWheelEventBuilder::WebMouseWheelEventBuilder(const Widget* widget, const WebCore::RenderObject* renderObject, const WheelEvent& event) { if (event.type() != EventTypeNames::wheel && event.type() != EventTypeNames::mousewheel) return; type = WebInputEvent::MouseWheel; updateWebMouseEventFromWebCoreMouseEvent(event, *widget, *renderObject, *this); deltaX = -event.deltaX(); deltaY = -event.deltaY(); wheelTicksX = event.ticksX(); wheelTicksY = event.ticksY(); scrollByPage = event.deltaMode() == WheelEvent::DOM_DELTA_PAGE; }
WebMouseWheelEventBuilder::WebMouseWheelEventBuilder(const Widget* widget, const WebCore::RenderObject* renderObject, const WheelEvent& event) { if (event.type() != eventNames().mousewheelEvent) return; type = WebInputEvent::MouseWheel; updateWebMouseEventFromWebCoreMouseEvent(event, *widget, *renderObject, *this); deltaX = static_cast<float>(event.rawDeltaX()); deltaY = static_cast<float>(event.rawDeltaY()); // The 120 is from WheelEvent::initWheelEvent(). wheelTicksX = static_cast<float>(event.wheelDeltaX()) / 120; wheelTicksY = static_cast<float>(event.wheelDeltaY()) / 120; scrollByPage = event.deltaMode() == WheelEvent::DOM_DELTA_PAGE; }
WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, const WebCore::RenderObject* renderObject, const MouseEvent& event) { if (event.type() == eventNames().mousemoveEvent) type = WebInputEvent::MouseMove; else if (event.type() == eventNames().mouseoutEvent) type = WebInputEvent::MouseLeave; else if (event.type() == eventNames().mouseoverEvent) type = WebInputEvent::MouseEnter; else if (event.type() == eventNames().mousedownEvent) type = WebInputEvent::MouseDown; else if (event.type() == eventNames().mouseupEvent) type = WebInputEvent::MouseUp; else if (event.type() == eventNames().contextmenuEvent) type = WebInputEvent::ContextMenu; else return; // Skip all other mouse events. updateWebMouseEventFromWebCoreMouseEvent(event, *widget, *renderObject, *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; } } #if ENABLE(POINTER_LOCK) movementX = event.webkitMovementX(); movementY = event.webkitMovementY(); #endif clickCount = event.detail(); }