Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: third_party/WebKit/Source/core/events/MouseRelatedEvent.h

Issue 2406263003: Make PointerEvent coordinates fractional for touch (Closed)
Patch Set: Fixed zoom issues Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com)
3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de)
4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. 5 * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 25 matching lines...) Expand all
36 public: 36 public:
37 enum class PositionType { 37 enum class PositionType {
38 Position, 38 Position,
39 // Positionless mouse events are used, for example, for 'click' events from 39 // Positionless mouse events are used, for example, for 'click' events from
40 // keyboard input. It's kind of surprising for a mouse event not to have a 40 // keyboard input. It's kind of surprising for a mouse event not to have a
41 // position. 41 // position.
42 Positionless 42 Positionless
43 }; 43 };
44 // Note that these values are adjusted to counter the effects of zoom, so that 44 // Note that these values are adjusted to counter the effects of zoom, so that
45 // values exposed via DOM APIs are invariant under zooming. 45 // values exposed via DOM APIs are invariant under zooming.
46 int screenX() const { return m_screenLocation.x(); } 46 double screenX() const {
47 int screenY() const { return m_screenLocation.y(); } 47 return isPointerEvent() ? m_screenLocation.x().toDouble()
Rick Byers 2016/10/12 14:09:54 It seems odd that this pattern of conditional retu
mustaq 2016/10/12 16:00:01 The problem here is that the initialization is don
48 const IntPoint& screenLocation() const { return m_screenLocation; } 48 : m_screenLocation.x().toInt();
49 int clientX() const { return m_clientLocation.x().toInt(); } 49 }
50 int clientY() const { return m_clientLocation.y().toInt(); } 50 double screenY() const {
51 return isPointerEvent() ? m_screenLocation.y().toDouble()
52 : m_screenLocation.y().toInt();
53 }
54 double clientX() const {
55 return isPointerEvent() ? m_clientLocation.x().toDouble()
56 : m_clientLocation.x().toInt();
57 }
58 double clientY() const {
59 return isPointerEvent() ? m_clientLocation.y().toDouble()
60 : m_clientLocation.y().toInt();
61 }
51 int movementX() const { return m_movementDelta.x().toInt(); } 62 int movementX() const { return m_movementDelta.x().toInt(); }
52 int movementY() const { return m_movementDelta.y().toInt(); } 63 int movementY() const { return m_movementDelta.y().toInt(); }
53 const LayoutPoint& clientLocation() const { return m_clientLocation; }
54 int layerX(); 64 int layerX();
55 int layerY(); 65 int layerY();
56 int offsetX(); 66 int offsetX();
57 int offsetY(); 67 int offsetY();
58 int pageX() const; 68 int pageX() const;
59 int pageY() const; 69 int pageY() const;
60 int x() const; 70 int x() const;
61 int y() const; 71 int y() const;
62 bool hasPosition() const { return m_positionType == PositionType::Position; } 72 bool hasPosition() const { return m_positionType == PositionType::Position; }
63 73
(...skipping 19 matching lines...) Expand all
83 const IntPoint& rootFrameLocation, 93 const IntPoint& rootFrameLocation,
84 const IntPoint& movementDelta, 94 const IntPoint& movementDelta,
85 PlatformEvent::Modifiers, 95 PlatformEvent::Modifiers,
86 double platformTimeStamp, 96 double platformTimeStamp,
87 PositionType, 97 PositionType,
88 InputDeviceCapabilities* sourceCapabilities = nullptr); 98 InputDeviceCapabilities* sourceCapabilities = nullptr);
89 99
90 MouseRelatedEvent(const AtomicString& type, 100 MouseRelatedEvent(const AtomicString& type,
91 const MouseEventInit& initializer); 101 const MouseEventInit& initializer);
92 102
93 void initCoordinates(const LayoutPoint& clientLocation); 103 void initCoordinates(const double clientX, const double clientY);
94 void receivedTarget() final; 104 void receivedTarget() final;
95 105
96 void computePageLocation(); 106 void computePageLocation();
97 void computeRelativePosition(); 107 void computeRelativePosition();
98 108
99 // Expose these so MouseEvent::initMouseEvent can set them. 109 // Expose these so MouseEvent::initMouseEvent can set them.
100 IntPoint m_screenLocation; 110 LayoutPoint m_screenLocation;
101 LayoutPoint m_clientLocation; 111 LayoutPoint m_clientLocation;
102 LayoutPoint m_movementDelta; 112 LayoutPoint m_movementDelta;
103 113
104 private: 114 private:
105 LayoutPoint m_pageLocation; 115 LayoutPoint m_pageLocation;
106 LayoutPoint m_layerLocation; 116 LayoutPoint m_layerLocation;
107 LayoutPoint m_offsetLocation; 117 LayoutPoint m_offsetLocation;
108 LayoutPoint m_absoluteLocation; 118 LayoutPoint m_absoluteLocation;
109 PositionType m_positionType; 119 PositionType m_positionType;
110 bool m_hasCachedRelativePosition; 120 bool m_hasCachedRelativePosition;
111 }; 121 };
112 122
113 } // namespace blink 123 } // namespace blink
114 124
115 #endif // MouseRelatedEvent_h 125 #endif // MouseRelatedEvent_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/events/MouseEventInit.idl ('k') | third_party/WebKit/Source/core/events/MouseRelatedEvent.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698