OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/events/PointerEventFactory.h" | 5 #include "core/events/PointerEventFactory.h" |
6 | 6 |
7 #include "core/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
8 #include "platform/geometry/FloatSize.h" | 8 #include "platform/geometry/FloatSize.h" |
9 | 9 |
10 namespace blink { | 10 namespace blink { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 FloatPoint pagePoint = | 111 FloatPoint pagePoint = |
112 targetFrame->view()->rootFrameToContents(touchPoint.position); | 112 targetFrame->view()->rootFrameToContents(touchPoint.position); |
113 float scaleFactor = 1.0f / targetFrame->pageZoomFactor(); | 113 float scaleFactor = 1.0f / targetFrame->pageZoomFactor(); |
114 FloatPoint scrollPosition(targetFrame->view()->getScrollOffset()); | 114 FloatPoint scrollPosition(targetFrame->view()->getScrollOffset()); |
115 FloatPoint clientPoint = pagePoint.scaledBy(scaleFactor); | 115 FloatPoint clientPoint = pagePoint.scaledBy(scaleFactor); |
116 clientPoint.moveBy(scrollPosition.scaledBy(-scaleFactor)); | 116 clientPoint.moveBy(scrollPosition.scaledBy(-scaleFactor)); |
117 | 117 |
118 pointerEventInit->setClientX(clientPoint.x()); | 118 pointerEventInit->setClientX(clientPoint.x()); |
119 pointerEventInit->setClientY(clientPoint.y()); | 119 pointerEventInit->setClientY(clientPoint.y()); |
120 | 120 |
| 121 if (touchPoint.state == WebTouchPoint::StateMoved) { |
| 122 pointerEventInit->setMovementX(touchPoint.movementX); |
| 123 pointerEventInit->setMovementY(touchPoint.movementY); |
| 124 } |
| 125 |
121 FloatSize pointRadius = | 126 FloatSize pointRadius = |
122 FloatSize(touchPoint.radiusX, touchPoint.radiusY).scaledBy(scaleFactor); | 127 FloatSize(touchPoint.radiusX, touchPoint.radiusY).scaledBy(scaleFactor); |
123 pointerEventInit->setWidth(pointRadius.width()); | 128 pointerEventInit->setWidth(pointRadius.width()); |
124 pointerEventInit->setHeight(pointRadius.height()); | 129 pointerEventInit->setHeight(pointRadius.height()); |
125 } | 130 } |
126 | 131 |
127 pointerEventInit->setScreenX(touchPoint.screenPosition.x); | 132 pointerEventInit->setScreenX(touchPoint.screenPosition.x); |
128 pointerEventInit->setScreenY(touchPoint.screenPosition.y); | 133 pointerEventInit->setScreenY(touchPoint.screenPosition.y); |
129 pointerEventInit->setPressure( | 134 pointerEventInit->setPressure( |
130 getPointerEventPressure(touchPoint.force, pointerEventInit->buttons())); | 135 getPointerEventPressure(touchPoint.force, pointerEventInit->buttons())); |
(...skipping 26 matching lines...) Expand all Loading... |
157 | 162 |
158 pointerEventInit->setClientX(locationInFrameZoomed.x()); | 163 pointerEventInit->setClientX(locationInFrameZoomed.x()); |
159 pointerEventInit->setClientY(locationInFrameZoomed.y()); | 164 pointerEventInit->setClientY(locationInFrameZoomed.y()); |
160 | 165 |
161 pointerEventInit->setPressure( | 166 pointerEventInit->setPressure( |
162 getPointerEventPressure(mouseEvent.force, pointerEventInit->buttons())); | 167 getPointerEventPressure(mouseEvent.force, pointerEventInit->buttons())); |
163 pointerEventInit->setTiltX(mouseEvent.tiltX); | 168 pointerEventInit->setTiltX(mouseEvent.tiltX); |
164 pointerEventInit->setTiltY(mouseEvent.tiltY); | 169 pointerEventInit->setTiltY(mouseEvent.tiltY); |
165 pointerEventInit->setTangentialPressure(mouseEvent.tangentialPressure); | 170 pointerEventInit->setTangentialPressure(mouseEvent.tangentialPressure); |
166 pointerEventInit->setTwist(mouseEvent.twist); | 171 pointerEventInit->setTwist(mouseEvent.twist); |
| 172 |
| 173 IntPoint movement = flooredIntPoint(mouseEvent.movementInRootFrame()); |
| 174 pointerEventInit->setMovementX(movement.x()); |
| 175 pointerEventInit->setMovementY(movement.y()); |
167 } | 176 } |
168 | 177 |
169 } // namespace | 178 } // namespace |
170 | 179 |
171 const int PointerEventFactory::s_invalidId = 0; | 180 const int PointerEventFactory::s_invalidId = 0; |
172 | 181 |
173 // Mouse id is 1 to behave the same as MS Edge for compatibility reasons. | 182 // Mouse id is 1 to behave the same as MS Edge for compatibility reasons. |
174 const int PointerEventFactory::s_mouseId = 1; | 183 const int PointerEventFactory::s_mouseId = 1; |
175 | 184 |
176 void PointerEventFactory::setIdTypeButtons( | 185 void PointerEventFactory::setIdTypeButtons( |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 const WebPointerProperties& properties) const { | 526 const WebPointerProperties& properties) const { |
518 if (properties.pointerType == WebPointerProperties::PointerType::Mouse) | 527 if (properties.pointerType == WebPointerProperties::PointerType::Mouse) |
519 return PointerEventFactory::s_mouseId; | 528 return PointerEventFactory::s_mouseId; |
520 IncomingId id(properties.pointerType, properties.id); | 529 IncomingId id(properties.pointerType, properties.id); |
521 if (m_pointerIncomingIdMapping.contains(id)) | 530 if (m_pointerIncomingIdMapping.contains(id)) |
522 return m_pointerIncomingIdMapping.get(id); | 531 return m_pointerIncomingIdMapping.get(id); |
523 return PointerEventFactory::s_invalidId; | 532 return PointerEventFactory::s_invalidId; |
524 } | 533 } |
525 | 534 |
526 } // namespace blink | 535 } // namespace blink |
OLD | NEW |