Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index 9a76e6ebcaae7f80346e80340cb3bcfc03fc110b..d02a27a448ae0d41051c23fc9ccb14b7c90714c5 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -2784,12 +2784,10 @@ bool EventHandler::sendContextMenuEventForKey() |
#else |
int rightAligned = 0; |
#endif |
- IntPoint location; |
- |
+ IntPoint rootViewLocation; |
Element* focusedElement = doc->focusedElement(); |
FrameSelection& selection = m_frame->selection(); |
Position start = selection.selection().start(); |
- bool shouldTranslateToRootView = true; |
if (start.deprecatedNode() && (selection.rootEditableElement() || selection.isRange())) { |
RefPtrWillBeRawPtr<Range> selectionRange = selection.toNormalizedRange(); |
@@ -2798,28 +2796,25 @@ bool EventHandler::sendContextMenuEventForKey() |
int x = rightAligned ? firstRect.maxX() : firstRect.x(); |
// In a multiline edit, firstRect.maxY() would endup on the next line, so -1. |
int y = firstRect.maxY() ? firstRect.maxY() - 1 : 0; |
- location = IntPoint(x, y); |
+ rootViewLocation = view->contentsToRootView(IntPoint(x, y)); |
} else if (focusedElement) { |
IntRect clippedRect = focusedElement->boundsInRootViewSpace(); |
- location = IntPoint(clippedRect.center()); |
+ rootViewLocation = IntPoint(clippedRect.center()); |
} else { |
- location = IntPoint( |
+ rootViewLocation = IntPoint( |
rightAligned ? view->contentsWidth() - kContextMenuMargin : kContextMenuMargin, |
kContextMenuMargin); |
- shouldTranslateToRootView = false; |
} |
m_frame->view()->setCursor(pointerCursor()); |
- |
- IntPoint position = shouldTranslateToRootView ? view->contentsToRootView(location) : location; |
- IntPoint globalPosition = view->hostWindow()->rootViewToScreen(IntRect(position, IntSize())).location(); |
+ IntPoint globalPosition = view->hostWindow()->rootViewToScreen(IntRect(rootViewLocation, IntSize())).location(); |
Node* targetNode = doc->focusedElement(); |
if (!targetNode) |
targetNode = doc; |
// Use the focused node as the target for hover and active. |
- HitTestResult result(position); |
+ HitTestResult result(rootViewLocation); |
result.setInnerNode(targetNode); |
doc->updateHoverActiveState(HitTestRequest::Active, result.innerElement()); |
@@ -2829,7 +2824,7 @@ bool EventHandler::sendContextMenuEventForKey() |
if (m_frame->settings()->showContextMenuOnMouseUp()) |
eventType = PlatformEvent::MouseReleased; |
- PlatformMouseEvent mouseEvent(position, globalPosition, RightButton, eventType, 1, false, false, false, false, PlatformMouseEvent::RealOrIndistinguishable, WTF::currentTime()); |
+ PlatformMouseEvent mouseEvent(rootViewLocation, globalPosition, RightButton, eventType, 1, false, false, false, false, PlatformMouseEvent::RealOrIndistinguishable, WTF::currentTime()); |
handleMousePressEvent(mouseEvent); |
return sendContextMenuEvent(mouseEvent); |