Index: Source/web/PopupContainer.cpp |
diff --git a/Source/web/PopupContainer.cpp b/Source/web/PopupContainer.cpp |
index e337b2a94b3424d7d7240f0b32852e04e9b3282d..95aea4fceb96e94c212d3e86d96815eaf42d0ba9 100644 |
--- a/Source/web/PopupContainer.cpp |
+++ b/Source/web/PopupContainer.cpp |
@@ -406,13 +406,13 @@ void PopupContainer::showInRect(const FloatQuad& controlPosition, const IntSize& |
// Save and convert the controlPosition to main window coords. Each point is converted separately |
// to window coordinates because the control could be in a transformed webview and then each point |
// would be transformed by a different delta. |
- m_controlPosition.setP1(v->contentsToWindow(IntPoint(controlPosition.p1().x(), controlPosition.p1().y()))); |
- m_controlPosition.setP2(v->contentsToWindow(IntPoint(controlPosition.p2().x(), controlPosition.p2().y()))); |
- m_controlPosition.setP3(v->contentsToWindow(IntPoint(controlPosition.p3().x(), controlPosition.p3().y()))); |
- m_controlPosition.setP4(v->contentsToWindow(IntPoint(controlPosition.p4().x(), controlPosition.p4().y()))); |
+ m_controlPosition.setP1(v->contentsToRootFrame(IntPoint(controlPosition.p1().x(), controlPosition.p1().y()))); |
+ m_controlPosition.setP2(v->contentsToRootFrame(IntPoint(controlPosition.p2().x(), controlPosition.p2().y()))); |
+ m_controlPosition.setP3(v->contentsToRootFrame(IntPoint(controlPosition.p3().x(), controlPosition.p3().y()))); |
+ m_controlPosition.setP4(v->contentsToRootFrame(IntPoint(controlPosition.p4().x(), controlPosition.p4().y()))); |
FloatRect controlBounds = m_controlPosition.boundingBox(); |
- controlBounds.moveBy(-v->page()->frameHost().pinchViewport().location()); |
+ controlBounds = v->page()->frameHost().pinchViewport().mainViewToViewportCSSPixels(controlBounds); |
m_controlPosition = controlBounds; |
m_controlSize = controlSize; |