Index: third_party/WebKit/Source/core/events/MouseRelatedEvent.h |
diff --git a/third_party/WebKit/Source/core/events/MouseRelatedEvent.h b/third_party/WebKit/Source/core/events/MouseRelatedEvent.h |
index 6d90d75eaf845aba5b91e226656c5d2798e6d6e9..1ff27bcd4660d91c50b08706b9d0ea9753764ef5 100644 |
--- a/third_party/WebKit/Source/core/events/MouseRelatedEvent.h |
+++ b/third_party/WebKit/Source/core/events/MouseRelatedEvent.h |
@@ -41,31 +41,56 @@ class CORE_EXPORT MouseRelatedEvent : public UIEventWithKeyState { |
// position. |
Positionless |
}; |
+ |
// Note that these values are adjusted to counter the effects of zoom, so that |
// values exposed via DOM APIs are invariant under zooming. |
- int screenX() const { return m_screenLocation.x(); } |
- int screenY() const { return m_screenLocation.y(); } |
- const IntPoint& screenLocation() const { return m_screenLocation; } |
- int clientX() const { return m_clientLocation.x().toInt(); } |
- int clientY() const { return m_clientLocation.y().toInt(); } |
- int movementX() const { return m_movementDelta.x().toInt(); } |
- int movementY() const { return m_movementDelta.y().toInt(); } |
- const LayoutPoint& clientLocation() const { return m_clientLocation; } |
+ // TODO(mustaq): Remove the PointerEvent specific code when mouse has |
+ // fractional coordinates. See crbug.com/655786. |
+ double screenX() const { |
+ return isPointerEvent() ? m_screenLocation.x() |
+ : static_cast<int>(m_screenLocation.x()); |
+ } |
+ double screenY() const { |
+ return isPointerEvent() ? m_screenLocation.y() |
+ : static_cast<int>(m_screenLocation.y()); |
+ } |
+ |
+ double clientX() const { |
+ return isPointerEvent() ? m_clientLocation.x() |
+ : static_cast<int>(m_clientLocation.x()); |
+ } |
+ double clientY() const { |
+ return isPointerEvent() ? m_clientLocation.y() |
+ : static_cast<int>(m_clientLocation.y()); |
+ } |
+ |
+ int movementX() const { return m_movementDelta.x(); } |
+ int movementY() const { return m_movementDelta.y(); } |
+ |
int layerX(); |
int layerY(); |
+ |
int offsetX(); |
int offsetY(); |
- int pageX() const; |
- int pageY() const; |
- int x() const; |
- int y() const; |
+ |
+ double pageX() const { |
+ return isPointerEvent() ? m_pageLocation.x() |
+ : static_cast<int>(m_pageLocation.x()); |
+ } |
+ double pageY() const { |
+ return isPointerEvent() ? m_pageLocation.y() |
+ : static_cast<int>(m_pageLocation.y()); |
+ } |
+ |
+ double x() const { return clientX(); } |
+ double y() const { return clientY(); } |
+ |
bool hasPosition() const { return m_positionType == PositionType::Position; } |
// Page point in "absolute" coordinates (i.e. post-zoomed, page-relative |
// coords, usable with LayoutObject::absoluteToLocal) relative to view(), i.e. |
// the local frame. |
- const LayoutPoint& absoluteLocation() const { return m_absoluteLocation; } |
- void setAbsoluteLocation(const LayoutPoint& p) { m_absoluteLocation = p; } |
+ const DoublePoint& absoluteLocation() const { return m_absoluteLocation; } |
DECLARE_VIRTUAL_TRACE(); |
@@ -90,22 +115,22 @@ class CORE_EXPORT MouseRelatedEvent : public UIEventWithKeyState { |
MouseRelatedEvent(const AtomicString& type, |
const MouseEventInit& initializer); |
- void initCoordinates(const LayoutPoint& clientLocation); |
+ void initCoordinates(const double clientX, const double clientY); |
void receivedTarget() final; |
void computePageLocation(); |
void computeRelativePosition(); |
// Expose these so MouseEvent::initMouseEvent can set them. |
- IntPoint m_screenLocation; |
- LayoutPoint m_clientLocation; |
- LayoutPoint m_movementDelta; |
+ DoublePoint m_screenLocation; |
+ DoublePoint m_clientLocation; |
+ DoublePoint m_movementDelta; |
private: |
- LayoutPoint m_pageLocation; |
- LayoutPoint m_layerLocation; |
- LayoutPoint m_offsetLocation; |
- LayoutPoint m_absoluteLocation; |
+ DoublePoint m_pageLocation; |
+ DoublePoint m_layerLocation; |
+ DoublePoint m_offsetLocation; |
+ DoublePoint m_absoluteLocation; |
PositionType m_positionType; |
bool m_hasCachedRelativePosition; |
}; |