diff options
author | Konstantin Tokarev <annulen@yandex.ru> | 2016-08-25 19:20:41 +0300 |
---|---|---|
committer | Konstantin Tokarev <annulen@yandex.ru> | 2017-02-02 12:30:55 +0000 |
commit | 6882a04fb36642862b11efe514251d32070c3d65 (patch) | |
tree | b7959826000b061fd5ccc7512035c7478742f7b0 /Source/WebCore/dom/WheelEvent.cpp | |
parent | ab6df191029eeeb0b0f16f127d553265659f739e (diff) | |
download | qtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz |
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f
Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/WebCore/dom/WheelEvent.cpp')
-rw-r--r-- | Source/WebCore/dom/WheelEvent.cpp | 116 |
1 files changed, 46 insertions, 70 deletions
diff --git a/Source/WebCore/dom/WheelEvent.cpp b/Source/WebCore/dom/WheelEvent.cpp index ea866e712..204423556 100644 --- a/Source/WebCore/dom/WheelEvent.cpp +++ b/Source/WebCore/dom/WheelEvent.cpp @@ -3,6 +3,7 @@ * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) * Copyright (C) 2003, 2005, 2006, 2008, 2010, 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013 Samsung Electronics. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -23,124 +24,99 @@ #include "config.h" #include "WheelEvent.h" -#include "Clipboard.h" -#include "EventDispatcher.h" +#include "DataTransfer.h" #include "EventNames.h" -#include "PlatformWheelEvent.h" - #include <wtf/MathExtras.h> namespace WebCore { +inline static unsigned determineDeltaMode(const PlatformWheelEvent& event) +{ + return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::DOM_DELTA_PAGE : WheelEvent::DOM_DELTA_PIXEL; +} + WheelEventInit::WheelEventInit() - : wheelDeltaX(0) - , wheelDeltaY(0) + : deltaX(0) + , deltaY(0) + , deltaZ(0) , deltaMode(WheelEvent::DOM_DELTA_PIXEL) + , wheelDeltaX(0) + , wheelDeltaY(0) { } WheelEvent::WheelEvent() - : m_deltaMode(DOM_DELTA_PIXEL) - , m_directionInvertedFromDevice(false) + : m_deltaX(0) + , m_deltaY(0) + , m_deltaZ(0) + , m_deltaMode(DOM_DELTA_PIXEL) + , m_initializedWithPlatformWheelEvent(false) { } WheelEvent::WheelEvent(const AtomicString& type, const WheelEventInit& initializer) : MouseEvent(type, initializer) - , m_wheelDelta(IntPoint(initializer.wheelDeltaX, initializer.wheelDeltaY)) + , m_wheelDelta(initializer.wheelDeltaX ? initializer.wheelDeltaX : -initializer.deltaX, initializer.wheelDeltaY ? initializer.wheelDeltaY : -initializer.deltaY) + , m_deltaX(initializer.deltaX ? initializer.deltaX : -initializer.wheelDeltaX) + , m_deltaY(initializer.deltaY ? initializer.deltaY : -initializer.wheelDeltaY) + , m_deltaZ(initializer.deltaZ) , m_deltaMode(initializer.deltaMode) + , m_initializedWithPlatformWheelEvent(false) { } -WheelEvent::WheelEvent(const FloatPoint& wheelTicks, const FloatPoint& rawDelta, unsigned deltaMode, - PassRefPtr<AbstractView> view, const IntPoint& screenLocation, const IntPoint& pageLocation, - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool directionInvertedFromDevice, double timestamp) - : MouseEvent(eventNames().mousewheelEvent, - true, true, timestamp, view, 0, screenLocation.x(), screenLocation.y(), - pageLocation.x(), pageLocation.y(), +WheelEvent::WheelEvent(const PlatformWheelEvent& event, AbstractView* view) + : MouseEvent(eventNames().wheelEvent, true, true, event.timestamp(), view, 0, event.globalPosition().x(), event.globalPosition().y(), event.position().x(), event.position().y() #if ENABLE(POINTER_LOCK) - 0, 0, + , 0, 0 #endif - ctrlKey, altKey, shiftKey, metaKey, 0, 0, 0, false) - , m_wheelDelta(IntPoint(static_cast<int>(wheelTicks.x() * TickMultiplier), static_cast<int>(wheelTicks.y() * TickMultiplier))) - , m_rawDelta(roundedIntPoint(rawDelta)) - , m_deltaMode(deltaMode) - , m_directionInvertedFromDevice(directionInvertedFromDevice) + , event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), 0, 0, 0, 0, false) + , m_wheelDelta(event.wheelTicksX() * TickMultiplier, event.wheelTicksY() * TickMultiplier) + , m_deltaX(-event.deltaX()) + , m_deltaY(-event.deltaY()) + , m_deltaZ(0) + , m_deltaMode(determineDeltaMode(event)) + , m_wheelEvent(event) + , m_initializedWithPlatformWheelEvent(true) { } -void WheelEvent::initWheelEvent(int rawDeltaX, int rawDeltaY, PassRefPtr<AbstractView> view, - int screenX, int screenY, int pageX, int pageY, - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) +void WheelEvent::initWheelEvent(int rawDeltaX, int rawDeltaY, AbstractView* view, int screenX, int screenY, int pageX, int pageY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) { if (dispatched()) return; - initUIEvent(eventNames().mousewheelEvent, true, true, view, 0); + initUIEvent(eventNames().wheelEvent, true, true, view, 0); m_screenLocation = IntPoint(screenX, screenY); m_ctrlKey = ctrlKey; m_altKey = altKey; m_shiftKey = shiftKey; m_metaKey = metaKey; - - // Normalize to the Windows 120 multiple + + // Normalize to 120 multiple for compatibility with IE. m_wheelDelta = IntPoint(rawDeltaX * TickMultiplier, rawDeltaY * TickMultiplier); - - m_rawDelta = IntPoint(rawDeltaX, rawDeltaY); + m_deltaX = -rawDeltaX; + m_deltaY = -rawDeltaY; + m_deltaMode = DOM_DELTA_PIXEL; - m_directionInvertedFromDevice = false; initCoordinates(IntPoint(pageX, pageY)); } -void WheelEvent::initWebKitWheelEvent(int rawDeltaX, int rawDeltaY, PassRefPtr<AbstractView> view, - int screenX, int screenY, int pageX, int pageY, - bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) +void WheelEvent::initWebKitWheelEvent(int rawDeltaX, int rawDeltaY, AbstractView* view, int screenX, int screenY, int pageX, int pageY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) { - initWheelEvent(rawDeltaX, rawDeltaY, view, screenX, screenY, pageX, pageY, - ctrlKey, altKey, shiftKey, metaKey); -} - -const AtomicString& WheelEvent::interfaceName() const -{ - return eventNames().interfaceForWheelEvent; -} - -bool WheelEvent::isMouseEvent() const -{ - return false; -} - -inline static unsigned deltaMode(const PlatformWheelEvent& event) -{ - return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::DOM_DELTA_PAGE : WheelEvent::DOM_DELTA_PIXEL; -} - -PassRefPtr<WheelEventDispatchMediator> WheelEventDispatchMediator::create(const PlatformWheelEvent& event, PassRefPtr<AbstractView> view) -{ - return adoptRef(new WheelEventDispatchMediator(event, view)); -} - -WheelEventDispatchMediator::WheelEventDispatchMediator(const PlatformWheelEvent& event, PassRefPtr<AbstractView> view) -{ - if (!(event.deltaX() || event.deltaY())) - return; - - setEvent(WheelEvent::create(FloatPoint(event.wheelTicksX(), event.wheelTicksY()), FloatPoint(event.deltaX(), event.deltaY()), - deltaMode(event), view, event.globalPosition(), event.position(), - event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), event.directionInvertedFromDevice(), event.timestamp())); + initWheelEvent(rawDeltaX, rawDeltaY, view, screenX, screenY, pageX, pageY, ctrlKey, altKey, shiftKey, metaKey); } -WheelEvent* WheelEventDispatchMediator::event() const +EventInterface WheelEvent::eventInterface() const { - return static_cast<WheelEvent*>(EventDispatchMediator::event()); + return WheelEventInterfaceType; } -bool WheelEventDispatchMediator::dispatchEvent(EventDispatcher* dispatcher) const +bool WheelEvent::isWheelEvent() const { - ASSERT(event()); - return EventDispatchMediator::dispatchEvent(dispatcher) && !event()->defaultHandled(); + return true; } } // namespace WebCore |