ScrollingTreeGestureState.cpp [plain text]
#include "config.h"
#include "ScrollingTreeGestureState.h"
#if ENABLE(ASYNC_SCROLLING)
#include "PlatformWheelEvent.h"
#include "ScrollingTree.h"
namespace WebCore {
ScrollingTreeGestureState::ScrollingTreeGestureState(ScrollingTree& scrollingTree)
: m_scrollingTree(scrollingTree)
{
}
void ScrollingTreeGestureState::receivedWheelEvent(const PlatformWheelEvent& event)
{
if (event.isGestureBegin()) {
clearAllNodes();
return;
}
}
bool ScrollingTreeGestureState::handleGestureCancel(const PlatformWheelEvent& event)
{
if (event.isGestureCancel()) {
if (m_mayBeginNodeID)
m_scrollingTree.handleWheelEventPhase(*m_mayBeginNodeID, PlatformWheelEventPhaseCancelled);
return true;
}
return false;
}
void ScrollingTreeGestureState::nodeDidHandleEvent(ScrollingNodeID nodeID, const PlatformWheelEvent& event)
{
switch (event.phase()) {
case PlatformWheelEventPhaseMayBegin:
m_mayBeginNodeID = nodeID;
m_scrollingTree.handleWheelEventPhase(nodeID, event.phase());
break;
case PlatformWheelEventPhaseCancelled:
ASSERT_NOT_REACHED();
break;
case PlatformWheelEventPhaseBegan:
m_activeNodeID = nodeID;
m_scrollingTree.handleWheelEventPhase(nodeID, event.phase());
break;
case PlatformWheelEventPhaseEnded:
if (m_activeNodeID)
m_scrollingTree.handleWheelEventPhase(*m_activeNodeID, event.phase());
break;
case PlatformWheelEventPhaseChanged:
case PlatformWheelEventPhaseStationary:
case PlatformWheelEventPhaseNone:
break;
}
switch (event.momentumPhase()) {
case PlatformWheelEventPhaseMayBegin:
case PlatformWheelEventPhaseCancelled:
ASSERT_NOT_REACHED();
break;
case PlatformWheelEventPhaseBegan:
m_activeNodeID = nodeID;
m_scrollingTree.handleWheelEventPhase(nodeID, event.momentumPhase());
break;
case PlatformWheelEventPhaseEnded:
if (m_activeNodeID)
m_scrollingTree.handleWheelEventPhase(*m_activeNodeID, event.momentumPhase());
break;
case PlatformWheelEventPhaseChanged:
case PlatformWheelEventPhaseStationary:
case PlatformWheelEventPhaseNone:
break;
}
}
void ScrollingTreeGestureState::clearAllNodes()
{
m_mayBeginNodeID = 0;
m_activeNodeID = 0;
}
};
#endif // ENABLE(ASYNC_SCROLLING)