WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, 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. timeStampSeconds = event.timeStamp() / millisPerSecond; switch (event.button()) { case LeftButton: button = WebMouseEvent::ButtonLeft; break; case MiddleButton: button = WebMouseEvent::ButtonMiddle; break; case RightButton: button = WebMouseEvent::ButtonRight; break; } modifiers = getWebInputModifiers(event); if (event.buttonDown()) { switch (event.button()) { case LeftButton: modifiers |= WebInputEvent::LeftButtonDown; break; case MiddleButton: modifiers |= WebInputEvent::MiddleButtonDown; break; case RightButton: modifiers |= WebInputEvent::RightButtonDown; break; } } ScrollView* view = widget->parent(); IntPoint p = view->contentsToWindow( IntPoint(event.absoluteLocation().x(), event.absoluteLocation().y())); globalX = event.screenX(); globalY = event.screenY(); windowX = p.x(); windowY = p.y(); x = event.absoluteLocation().x() - widget->location().x(); y = event.absoluteLocation().y() - widget->location().y(); #if ENABLE(POINTER_LOCK) movementX = event.webkitMovementX(); movementY = event.webkitMovementY(); #endif clickCount = event.detail(); }
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; }
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(); }
WebMouseEventBuilder::WebMouseEventBuilder(const Widget* widget, 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. timeStampSeconds = event.timeStamp() / millisPerSecond; switch (event.button()) { case LeftButton: button = WebMouseEvent::ButtonLeft; break; case MiddleButton: button = WebMouseEvent::ButtonMiddle; break; case RightButton: button = WebMouseEvent::ButtonRight; break; } modifiers = getWebInputModifiers(event); if (event.buttonDown()) { switch (event.button()) { case LeftButton: modifiers |= WebInputEvent::LeftButtonDown; break; case MiddleButton: modifiers |= WebInputEvent::MiddleButtonDown; break; case RightButton: modifiers |= WebInputEvent::RightButtonDown; break; } } ScrollView* view = widget->parent(); IntPoint p = view->contentsToWindow( IntPoint(event.absoluteLocation().x(), event.absoluteLocation().y())); globalX = event.screenX(); globalY = event.screenY(); windowX = p.x(); windowY = p.y(); #if OS(ANDROID) // absoluteLocation is actually scaled if the widget is inside an Iframe. // Switch to return scaled offsets so that the behaviors are consistent. // TODO (qinmin): maybe we should return adsolute offset in DOM space? IntPoint origin = view->contentsToWindow(widget->location()); x = p.x() - origin.x(); y = p.y() - origin.y(); #else x = event.absoluteLocation().x() - widget->location().x(); y = event.absoluteLocation().y() - widget->location().y(); #endif clickCount = event.detail(); }