static PlatformWheelEvent constructRelativeWheelEvent(const PlatformWheelEvent& e, FramelessScrollView* parent, FramelessScrollView* child) { IntPoint pos = parent->convertSelfToChild(child, e.pos()); // FIXME: This is a horrible hack since PlatformWheelEvent has no setters for x/y. PlatformWheelEvent relativeEvent = e; IntPoint& relativePos = const_cast<IntPoint&>(relativeEvent.pos()); relativePos.setX(pos.x()); relativePos.setY(pos.y()); return relativeEvent; }
void EventTargetNode::dispatchWheelEvent(PlatformWheelEvent& e) { ASSERT(!eventDispatchForbidden()); if (e.deltaX() == 0 && e.deltaY() == 0) return; FrameView* view = document()->view(); if (!view) return; IntPoint pos = view->windowToContents(e.pos()); // Convert the deltas from pixels to lines if we have a pixel scroll event. float deltaX = e.deltaX(); float deltaY = e.deltaY(); // FIXME: Should we do anything with a ScrollByPageWheelEvent here? // It will be treated like a line scroll of 1 right now. if (e.granularity() == ScrollByPixelWheelEvent) { deltaX /= cMouseWheelPixelsPerLineStep; deltaY /= cMouseWheelPixelsPerLineStep; } RefPtr<WheelEvent> we = WheelEvent::create(e.deltaX(), e.deltaY(), document()->defaultView(), e.globalX(), e.globalY(), pos.x(), pos.y(), e.ctrlKey(), e.altKey(), e.shiftKey(), e.metaKey()); ExceptionCode ec = 0; if (!dispatchEvent(we.release(), ec)) e.accept(); }
void EventTargetNode::dispatchWheelEvent(PlatformWheelEvent& e) { ASSERT(!eventDispatchForbidden()); if (e.deltaX() == 0 && e.deltaY() == 0) return; FrameView* view = document()->view(); if (!view) return; IntPoint pos = view->windowToContents(e.pos()); RefPtr<WheelEvent> we = WheelEvent::create(e.deltaX(), e.deltaY(), document()->defaultView(), e.globalX(), e.globalY(), pos.x(), pos.y(), e.ctrlKey(), e.altKey(), e.shiftKey(), e.metaKey()); ExceptionCode ec = 0; if (!dispatchEvent(we.release(), ec, true)) e.accept(); }
void EventTargetNode::dispatchWheelEvent(PlatformWheelEvent& e) { assert(!eventDispatchForbidden()); if (e.delta() == 0) return; FrameView* view = document()->view(); if (!view) return; IntPoint pos = view->viewportToContents(e.pos()); RefPtr<WheelEvent> we = new WheelEvent(e.isHorizontal(), e.delta(), document()->defaultView(), e.globalX(), e.globalY(), pos.x(), pos.y(), e.ctrlKey(), e.altKey(), e.shiftKey(), e.metaKey()); ExceptionCode ec = 0; if (!dispatchEvent(we, ec, true)) e.accept(); }