Ejemplo n.º 1
0
bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event)
{
    // In principle, we shouldn't get another pointer down for the same
    // pointer ID, but for mice, we don't get a pointer cancel when you
    // drag outside the window frame on Linux. For now, send the pointer
    // cancel at this point.
    bool alreadyDown = m_stateForPointer.find(event.pointer) != m_stateForPointer.end();
    if (event.kind == WebPointerEvent::Mouse && alreadyDown) {
        WebPointerEvent fakeCancel = event;
        fakeCancel.type = WebInputEvent::PointerCancel;
        handlePointerCancelEvent(fakeCancel);
    }

    DCHECK(!alreadyDown) << "Pointer id " << event.pointer << "already down!";
    HitTestResult hitTestResult = performHitTest(positionForEvent(event));
    RefPtr<Node> target = targetForHitTestResult(hitTestResult);
    if (!target)
        return false;
    PointerState& state = m_stateForPointer[event.pointer];
    state.target = target;
    bool eventSwallowed = !dispatchPointerEvent(state, event);
    // TODO(abarth): Set the target for the pointer to something determined when
    // dispatching the event.
    updateSelectionForPointerDown(hitTestResult, event);
    return eventSwallowed;
}
Ejemplo n.º 2
0
bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointerEvent& event)
{
    ASSERT(event.type == WebInputEvent::PointerUp);
    HitTestResult hitTestResult = performHitTest(positionForEvent(event));
    Node* releaseTarget = targetForHitTestResult(hitTestResult);
    Node* clickTarget = NodeRenderingTraversal::commonAncestor(*releaseTarget, capturingTarget);
    if (!clickTarget)
        return true;
    // TODO(abarth): Make a proper gesture event that includes information from the event.
    return clickTarget->dispatchEvent(Event::createCancelableBubble(EventTypeNames::click));
}
void WebkitPixelStreamer::processWheelEvent(const deflect::Event &wheelEvent)
{
    const QWebHitTestResult& hitResult = performHitTest(wheelEvent);

    if(!hitResult.isNull() && isWebGLElement(hitResult.element()))
    {
        const int delta = wheelEvent.dy;
        QWheelEvent myEvent(hitResult.pos(), delta, Qt::NoButton,
                            (Qt::KeyboardModifiers)wheelEvent.modifiers,
                            Qt::Vertical);

        webView_.page()->event(&myEvent);
    }
}
void WebkitPixelStreamer::processPressEvent(const deflect::Event &pressEvent)
{
    const QWebHitTestResult& hitResult = performHitTest(pressEvent);

    if(hitResult.isNull() || isWebGLElement(hitResult.element()))
    {
        interactionModeActive_ = true;
    }

    const QPoint& pointerPos = getPointerPosition(pressEvent);

    QMouseEvent myEvent(QEvent::MouseButtonPress, pointerPos,
                        Qt::LeftButton, Qt::LeftButton,
                        (Qt::KeyboardModifiers)pressEvent.modifiers);

    webView_.page()->event(&myEvent);
}
void WebkitPixelStreamer::processClickEvent(const deflect::Event &clickEvent)
{
    // TODO History navigation (until swipe gestures are fixed)
    if (clickEvent.mouseX < 0.02)
    {
        webView_.back();
        return;
    }
    if (clickEvent.mouseX > 0.98)
    {
        webView_.forward();
        return;
    }

    processPressEvent(clickEvent);
    processReleaseEvent(clickEvent);

    const QWebHitTestResult& hitResult = performHitTest( clickEvent );
    if( !hitResult.isNull() && !hitResult.linkUrl().isEmpty( ))
        webView_.load( hitResult.linkUrl( ));
}
Ejemplo n.º 6
0
bool NewEventHandler::handleWheelEvent(const WebWheelEvent& event)
{
    HitTestResult hitTestResult = performHitTest(positionForEvent(event));
    RefPtr<Node> target = targetForHitTestResult(hitTestResult);
    return target && !dispatchWheelEvent(*target, event);
}