summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/MouseRelatedEvent.cpp
diff options
context:
space:
mode:
authorFeng Qian <>2009-04-10 18:11:29 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-04-10 18:11:29 -0700
commit8f72e70a9fd78eec56623b3a62e68f16b7b27e28 (patch)
tree181bf9a400c30a1bf34ea6d72560e8d00111d549 /WebCore/dom/MouseRelatedEvent.cpp
parent7ed56f225e0ade046e1c2178977f72b2d896f196 (diff)
downloadexternal_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.cpp21
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();
}
}
}