diff options
author | Feng Qian <> | 2009-04-10 18:11:29 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-04-10 18:11:29 -0700 |
commit | 8f72e70a9fd78eec56623b3a62e68f16b7b27e28 (patch) | |
tree | 181bf9a400c30a1bf34ea6d72560e8d00111d549 /WebCore/dom/MouseRelatedEvent.cpp | |
parent | 7ed56f225e0ade046e1c2178977f72b2d896f196 (diff) | |
download | external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.zip external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.gz external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.bz2 |
AI 145796: Land the WebKit merge @r42026.
Automated import of CL 145796
Diffstat (limited to 'WebCore/dom/MouseRelatedEvent.cpp')
-rw-r--r-- | WebCore/dom/MouseRelatedEvent.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/WebCore/dom/MouseRelatedEvent.cpp b/WebCore/dom/MouseRelatedEvent.cpp index a69c8a7..c66b0a8 100644 --- a/WebCore/dom/MouseRelatedEvent.cpp +++ b/WebCore/dom/MouseRelatedEvent.cpp @@ -97,6 +97,8 @@ void MouseRelatedEvent::initCoordinates() m_layerY = m_pageY; m_offsetX = m_pageX; m_offsetY = m_pageY; + + computePageLocation(); } void MouseRelatedEvent::initCoordinates(int clientX, int clientY) @@ -112,6 +114,14 @@ void MouseRelatedEvent::initCoordinates(int clientX, int clientY) m_layerY = m_pageY; m_offsetX = m_pageX; m_offsetY = m_pageY; + + computePageLocation(); +} + +void MouseRelatedEvent::computePageLocation() +{ + float zoomFactor = (view() && view()->frame()) ? view()->frame()->pageZoomFactor() : 1.0f; + setAbsoluteLocation(roundedIntPoint(FloatPoint(pageX() * zoomFactor, pageY() * zoomFactor))); } void MouseRelatedEvent::receivedTarget() @@ -133,9 +143,10 @@ void MouseRelatedEvent::receivedTarget() // Adjust offsetX/Y to be relative to the target's position. if (!isSimulated()) { if (RenderObject* r = targ->renderer()) { - FloatPoint absPos = r->absoluteToLocal(FloatPoint(m_pageX, m_pageY), false, true); - m_offsetX = absPos.x(); - m_offsetY = absPos.y(); + FloatPoint localPos = r->absoluteToLocal(absoluteLocation(), false, true); + float zoomFactor = (view() && view()->frame()) ? view()->frame()->pageZoomFactor() : 1.0f; + m_offsetX = lroundf(localPos.x() / zoomFactor); + m_offsetY = lroundf(localPos.y() / zoomFactor); } } @@ -151,8 +162,8 @@ void MouseRelatedEvent::receivedTarget() RenderLayer* layer = n->renderer()->enclosingLayer(); layer->updateLayerPosition(); for (; layer; layer = layer->parent()) { - m_layerX -= layer->xPos(); - m_layerY -= layer->yPos(); + m_layerX -= layer->x(); + m_layerY -= layer->y(); } } } |