Пример #1
0
void MediaControlsAppleEventListener::handleEvent(ScriptExecutionContext*, Event* event)
{
    if (event->type() == eventNames().clickEvent)
        m_mediaControls->handleClickEvent(event);
    else if ((event->type() == eventNames().wheelEvent || event->type() == eventNames().mousewheelEvent) && event->eventInterface() == WheelEventInterfaceType) {
        WheelEvent* wheelEvent = static_cast<WheelEvent*>(event);
        if (m_mediaControls->shouldClosedCaptionsContainerPreventPageScrolling(wheelEvent->wheelDeltaY()))
            event->preventDefault();
    }
}
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();
    resendingPluginId = event.resendingPluginId();
    railsMode = static_cast<RailsMode>(event.railsMode());
}
Пример #3
0
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;
}
Пример #5
0
void MouseController::handleWheel(WheelEvent & e)
{//滚动是忽略capture
    View * target = e.target();
    if (target == root_)
        target = getTargetByPos(e.getLoc(), true);
    if (!target)
        return;

    WheelEvent we(e.type(), target, e.dx(), e.dy(),
        target->mapToLocal(e.getLoc()), e.getLoc(),
        e.getFlags());
    EventDispatcher::Push(we);

    //暂时先这么处理 因为滚动的时候可能离开控件所以 需要改变鼠标样式之类
    MouseEvent me(kET_MOUSE_MOVE, kMB_NONE, root_, root_->mapToLocal(last_mouse_point_), last_mouse_point_, 0);
    handleEvent(me);
    //if (!capture_)
    //{//如果没有capture 可能滚动到新的view里 需要shiftOver
    //    shiftIfNecessary();
    //}
}
Пример #6
0
JSValue* JSWheelEvent::getValueProperty(ExecState* exec, int token) const
{
    switch (token) {
    case ScreenXAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->screenX());
    }
    case ScreenYAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->screenY());
    }
    case ClientXAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->clientX());
    }
    case ClientYAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->clientY());
    }
    case CtrlKeyAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsBoolean(imp->ctrlKey());
    }
    case ShiftKeyAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsBoolean(imp->shiftKey());
    }
    case AltKeyAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsBoolean(imp->altKey());
    }
    case MetaKeyAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsBoolean(imp->metaKey());
    }
    case WheelDeltaAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->wheelDelta());
    }
    case WheelDeltaXAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->wheelDeltaX());
    }
    case WheelDeltaYAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->wheelDeltaY());
    }
    case OffsetXAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->offsetX());
    }
    case OffsetYAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->offsetY());
    }
    case XAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->x());
    }
    case YAttrNum: {
        WheelEvent* imp = static_cast<WheelEvent*>(impl());
        return jsNumber(exec, imp->y());
    }
    case ConstructorAttrNum:
        return getConstructor(exec);
    }
    return 0;
}
Пример #7
0
JSValue jsWheelEventY(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
    UNUSED_PARAM(exec);
    WheelEvent* imp = static_cast<WheelEvent*>(static_cast<JSWheelEvent*>(asObject(slot.slotBase()))->impl());
    return jsNumber(exec, imp->y());
}
Пример #8
0
WebMouseWheelEventBuilder::WebMouseWheelEventBuilder(const Widget* widget, const WheelEvent& event)
{
    if (event.type() != eventNames().mousewheelEvent)
        return;
    type = WebInputEvent::MouseWheel;
    timeStampSeconds = event.timeStamp() / millisPerSecond;
    modifiers = getWebInputModifiers(event);
    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();
    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.granularity() == WheelEvent::Page;
}