| Index: Source/core/dom/Touch.cpp
|
| diff --git a/Source/core/dom/Touch.cpp b/Source/core/dom/Touch.cpp
|
| index 0e05655f4c405cd3b4f404a8fda126fbb27269dc..c2b5f6118f56b71c21208d80a88321d51ee3f8c8 100644
|
| --- a/Source/core/dom/Touch.cpp
|
| +++ b/Source/core/dom/Touch.cpp
|
| @@ -29,61 +29,43 @@
|
|
|
| #include "core/frame/FrameView.h"
|
| #include "core/frame/LocalFrame.h"
|
| +#include "platform/geometry/FloatPoint.h"
|
|
|
| namespace WebCore {
|
|
|
| -static int contentsX(LocalFrame* frame)
|
| +static FloatPoint contentsOffset(LocalFrame* frame)
|
| {
|
| if (!frame)
|
| - return 0;
|
| + return FloatPoint();
|
| FrameView* frameView = frame->view();
|
| if (!frameView)
|
| - return 0;
|
| - return frameView->scrollX() / frame->pageZoomFactor();
|
| + return FloatPoint();
|
| + float scale = 1.0f / frame->pageZoomFactor();
|
| + return FloatPoint(frameView->scrollPosition()).scaledBy(scale);
|
| }
|
|
|
| -static int contentsY(LocalFrame* frame)
|
| -{
|
| - if (!frame)
|
| - return 0;
|
| - FrameView* frameView = frame->view();
|
| - if (!frameView)
|
| - return 0;
|
| - return frameView->scrollY() / frame->pageZoomFactor();
|
| -}
|
| -
|
| -Touch::Touch(LocalFrame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force)
|
| +Touch::Touch(LocalFrame* frame, EventTarget* target, unsigned identifier, const FloatPoint& screenPos, const FloatPoint& pagePos, const FloatSize& radius, float rotationAngle, float force)
|
| : m_target(target)
|
| , m_identifier(identifier)
|
| - , m_clientX(pageX - contentsX(frame))
|
| - , m_clientY(pageY - contentsY(frame))
|
| - , m_screenX(screenX)
|
| - , m_screenY(screenY)
|
| - , m_pageX(pageX)
|
| - , m_pageY(pageY)
|
| - , m_radiusX(radiusX)
|
| - , m_radiusY(radiusY)
|
| + , m_clientPos(pagePos - contentsOffset(frame))
|
| + , m_screenPos(screenPos)
|
| + , m_pagePos(pagePos)
|
| + , m_radius(radius)
|
| , m_rotationAngle(rotationAngle)
|
| , m_force(force)
|
| {
|
| ScriptWrappable::init(this);
|
| float scaleFactor = frame->pageZoomFactor();
|
| - float x = pageX * scaleFactor;
|
| - float y = pageY * scaleFactor;
|
| - m_absoluteLocation = roundedLayoutPoint(FloatPoint(x, y));
|
| + m_absoluteLocation = roundedLayoutPoint(pagePos.scaledBy(scaleFactor));
|
| }
|
|
|
| -Touch::Touch(EventTarget* target, unsigned identifier, int clientX, int clientY, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force, LayoutPoint absoluteLocation)
|
| +Touch::Touch(EventTarget* target, unsigned identifier, const FloatPoint& clientPos, const FloatPoint& screenPos, const FloatPoint& pagePos, const FloatSize& radius, float rotationAngle, float force, LayoutPoint absoluteLocation)
|
| : m_target(target)
|
| , m_identifier(identifier)
|
| - , m_clientX(clientX)
|
| - , m_clientY(clientY)
|
| - , m_screenX(screenX)
|
| - , m_screenY(screenY)
|
| - , m_pageX(pageX)
|
| - , m_pageY(pageY)
|
| - , m_radiusX(radiusX)
|
| - , m_radiusY(radiusY)
|
| + , m_clientPos(clientPos)
|
| + , m_screenPos(screenPos)
|
| + , m_pagePos(pagePos)
|
| + , m_radius(radius)
|
| , m_rotationAngle(rotationAngle)
|
| , m_force(force)
|
| , m_absoluteLocation(absoluteLocation)
|
| @@ -93,7 +75,7 @@ Touch::Touch(EventTarget* target, unsigned identifier, int clientX, int clientY,
|
|
|
| PassRefPtrWillBeRawPtr<Touch> Touch::cloneWithNewTarget(EventTarget* eventTarget) const
|
| {
|
| - return adoptRefWillBeNoop(new Touch(eventTarget, m_identifier, m_clientX, m_clientY, m_screenX, m_screenY, m_pageX, m_pageY, m_radiusX, m_radiusY, m_rotationAngle, m_force, m_absoluteLocation));
|
| + return adoptRefWillBeNoop(new Touch(eventTarget, m_identifier, m_clientPos, m_screenPos, m_pagePos, m_radius, m_rotationAngle, m_force, m_absoluteLocation));
|
| }
|
|
|
| void Touch::trace(Visitor* visitor)
|
|
|