void PageClientImpl::doneWithTouchEvent(const NativeWebTouchEvent& touchEvent, bool wasEventHandled)
{
    if (wasEventHandled)
        return;

    const struct wpe_input_touch_event_raw* touchPoint = touchEvent.nativeFallbackTouchPoint();
    if (touchPoint->type == wpe_input_touch_event_type_null)
        return;

    struct wpe_input_pointer_event pointerEvent{
        wpe_input_pointer_event_type_null, touchPoint->time,
        touchPoint->x, touchPoint->y,
        1, 0
    };

    switch (touchPoint->type) {
    case wpe_input_touch_event_type_down:
        pointerEvent.type = wpe_input_pointer_event_type_button;
        pointerEvent.state = 1;
        break;
    case wpe_input_touch_event_type_motion:
        pointerEvent.type = wpe_input_pointer_event_type_motion;
        pointerEvent.state = 1;
        break;
    case wpe_input_touch_event_type_up:
        pointerEvent.type = wpe_input_pointer_event_type_button;
        pointerEvent.state = 0;
        break;
    case wpe_input_pointer_event_type_null:
        ASSERT_NOT_REACHED();
        return;
    }

    m_view.page().handleMouseEvent(NativeWebMouseEvent(&pointerEvent));
}
Beispiel #2
0
void WebViewNix::sendGestureEvent(const NIXGestureEvent& event)
{
    NIXMouseEvent nixEvent;
    nixEvent.type = kNIXInputEventTypeMouseDown;
    nixEvent.button = kWKEventMouseButtonLeftButton;
    nixEvent.x = event.x;
    nixEvent.y = event.y;
    nixEvent.globalX = event.globalX;
    nixEvent.globalY = event.globalY;
    nixEvent.clickCount = 1;
    nixEvent.modifiers = event.modifiers;
    nixEvent.timestamp = event.timestamp;

    page()->handleMouseEvent(NativeWebMouseEvent(nixEvent, &m_lastCursorPosition));

    nixEvent.type = kNIXInputEventTypeMouseUp;
    page()->handleMouseEvent(NativeWebMouseEvent(nixEvent, &m_lastCursorPosition));
}
void GestureController::DragGesture::handleTap(const GdkEvent* event)
{
    ASSERT(!m_inDrag);
    GUniquePtr<GdkEvent> pointerEvent(gdk_event_new(GDK_MOTION_NOTIFY));
    pointerEvent->motion.time = event->touch.time;
    pointerEvent->motion.x = event->touch.x;
    pointerEvent->motion.y = event->touch.y;
    pointerEvent->motion.x_root = event->touch.x_root;
    pointerEvent->motion.y_root = event->touch.y_root;
    pointerEvent->motion.state = event->touch.state;
    m_page.handleMouseEvent(NativeWebMouseEvent(pointerEvent.get(), 0));

    pointerEvent.reset(gdk_event_new(GDK_BUTTON_PRESS));
    pointerEvent->button.button = 1;
    pointerEvent->button.time = event->touch.time;
    pointerEvent->button.x = event->touch.x;
    pointerEvent->button.y = event->touch.y;
    pointerEvent->button.x_root = event->touch.x_root;
    pointerEvent->button.y_root = event->touch.y_root;
    m_page.handleMouseEvent(NativeWebMouseEvent(pointerEvent.get(), 1));

    pointerEvent->type = GDK_BUTTON_RELEASE;
    m_page.handleMouseEvent(NativeWebMouseEvent(pointerEvent.get(), 0));
}
void QtWebPageEventHandler::handleMouseMoveEvent(QMouseEvent* ev)
{
    // For some reason mouse press results in mouse hover (which is
    // converted to mouse move for WebKit). We ignore these hover
    // events by comparing lastPos with newPos.
    // NOTE: lastPos from the event always comes empty, so we work
    // around that here.
    static QPointF lastPos = QPointF();
    QTransform fromItemTransform = m_webPage->transformFromItem();
    QPointF webPagePoint = fromItemTransform.map(ev->localPos());
    if (lastPos == webPagePoint)
        return;
    lastPos = webPagePoint;

    m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, /*eventClickCount*/ 0));
}
void QtWebPageEventHandler::handleMousePressEvent(QMouseEvent* ev)
{
    QTransform fromItemTransform = m_webPage->transformFromItem();
    QPointF webPagePoint = fromItemTransform.map(ev->localPos());

    if (m_clickTimer.isActive()
        && m_previousClickButton == ev->button()
        && (webPagePoint - m_lastClick).manhattanLength() < qApp->styleHints()->startDragDistance()) {
        m_clickCount++;
    } else {
        m_clickCount = 1;
        m_previousClickButton = ev->button();
    }

    m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, m_clickCount));

    m_lastClick = webPagePoint;
    m_clickTimer.start(qApp->styleHints()->mouseDoubleClickInterval(), this);
}
void QtWebPageEventHandler::handleMouseReleaseEvent(QMouseEvent* ev)
{
    QTransform fromItemTransform = m_webPage->transformFromItem();
    m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, /*eventClickCount*/ 0));
}
Beispiel #7
0
void WebViewEfl::sendMouseEvent(const Evas_Event_Mouse_Move* event)
{
    ASSERT(event);
    m_page->handleMouseEvent(NativeWebMouseEvent(event, transformFromScene(), m_userViewportTransform.toAffineTransform()));
}
Beispiel #8
0
void WebViewNix::sendMouseEvent(const NIXMouseEvent& event)
{
    page()->handleMouseEvent(NativeWebMouseEvent(event, &m_lastCursorPosition));
}