Example #1
0
CCInputHandlerClient::ScrollStatus CCLayerImpl::tryScroll(const IntPoint& viewportPoint, CCInputHandlerClient::ScrollInputType type) const
{
    if (shouldScrollOnMainThread()) {
        TRACE_EVENT("tryScroll Failed shouldScrollOnMainThread", this, 0);
        return CCInputHandlerClient::ScrollFailed;
    }

    if (!screenSpaceTransform().isInvertible()) {
        TRACE_EVENT("tryScroll Failed nonInvertibleTransform", this, 0);
        return CCInputHandlerClient::ScrollIgnored;
    }

    IntPoint contentPoint(screenSpaceTransform().inverse().mapPoint(viewportPoint));
    if (nonFastScrollableRegion().contains(contentPoint)) {
        TRACE_EVENT("tryScroll Failed nonFastScrollableRegion", this, 0);
        return CCInputHandlerClient::ScrollFailed;
    }

    if (type == CCInputHandlerClient::Wheel && haveWheelEventHandlers()) {
        TRACE_EVENT("tryScroll Failed wheelEventHandlers", this, 0);
        return CCInputHandlerClient::ScrollFailed;
    }

    if (!scrollable()) {
        TRACE_EVENT("tryScroll Ignored not scrollable", this, 0);
        return CCInputHandlerClient::ScrollIgnored;
    }

    return CCInputHandlerClient::ScrollStarted;
}
Example #2
0
CCInputHandlerClient::ScrollStatus CCLayerImpl::tryScroll(const IntPoint& viewportPoint, CCInputHandlerClient::ScrollInputType type) const
{
    if (shouldScrollOnMainThread()) {
        TRACE_EVENT0("cc", "CCLayerImpl::tryScroll: Failed shouldScrollOnMainThread");
        return CCInputHandlerClient::ScrollOnMainThread;
    }

    if (!screenSpaceTransform().isInvertible()) {
        TRACE_EVENT0("cc", "CCLayerImpl::tryScroll: Ignored nonInvertibleTransform");
        return CCInputHandlerClient::ScrollIgnored;
    }

    if (!nonFastScrollableRegion().isEmpty()) {
        bool clipped = false;
        FloatPoint hitTestPointInLocalSpace = CCMathUtil::projectPoint(screenSpaceTransform().inverse(), FloatPoint(viewportPoint), clipped);
        if (!clipped && nonFastScrollableRegion().contains(flooredIntPoint(hitTestPointInLocalSpace))) {
            TRACE_EVENT0("cc", "CCLayerImpl::tryScroll: Failed nonFastScrollableRegion");
            return CCInputHandlerClient::ScrollOnMainThread;
        }
    }

    if (type == CCInputHandlerClient::Wheel && haveWheelEventHandlers()) {
        TRACE_EVENT0("cc", "CCLayerImpl::tryScroll: Failed wheelEventHandlers");
        return CCInputHandlerClient::ScrollOnMainThread;
    }

    if (!scrollable()) {
        TRACE_EVENT0("cc", "CCLayerImpl::tryScroll: Ignored not scrollable");
        return CCInputHandlerClient::ScrollIgnored;
    }

    return CCInputHandlerClient::ScrollStarted;
}