Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index 581c19aaae92a86def83dc537eece758ee1afc01..85067162af40782f948ea0ef4bd25b9cddbbfef4 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -715,8 +715,8 @@ bool EventHandler::handleMouseDraggedEvent(const MouseEventWithHitTestResults& e |
if (m_selectionInitiationState != ExtendedSelection) { |
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active); |
- HitTestResult result(m_mouseDownPos); |
- m_frame->document()->layoutView()->hitTest(request, result); |
+ HitTestResult result(request, m_mouseDownPos); |
+ m_frame->document()->layoutView()->hitTest(result); |
updateSelectionForMouseDrag(result); |
} |
@@ -734,8 +734,8 @@ void EventHandler::updateSelectionForMouseDrag() |
return; |
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::Move); |
- HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition)); |
- renderer->hitTest(request, result); |
+ HitTestResult result(request, view->rootFrameToContents(m_lastKnownMousePosition)); |
+ renderer->hitTest(result); |
updateSelectionForMouseDrag(result); |
} |
@@ -899,7 +899,9 @@ HitTestResult EventHandler::hitTestResultAtPoint(const LayoutPoint& point, HitTe |
} |
} |
- HitTestResult result(point, padding.height(), padding.width(), padding.height(), padding.width()); |
+ // hitTestResultAtPoint is specifically used to hitTest into all frames, thus it always allows child frame content. |
+ HitTestRequest request(hitType | HitTestRequest::AllowChildFrameContent); |
+ HitTestResult result(request, point, padding.height(), padding.width(), padding.height(), padding.width()); |
// LayoutView::hitTest causes a layout, and we don't want to hit that until the first |
// layout because until then, there is nothing shown on the screen - the user can't |
@@ -910,9 +912,7 @@ HitTestResult EventHandler::hitTestResultAtPoint(const LayoutPoint& point, HitTe |
if (!m_frame->contentRenderer() || !m_frame->view() || !m_frame->view()->didFirstLayout()) |
return result; |
- // hitTestResultAtPoint is specifically used to hitTest into all frames, thus it always allows child frame content. |
- HitTestRequest request(hitType | HitTestRequest::AllowChildFrameContent); |
- m_frame->contentRenderer()->hitTest(request, result); |
+ m_frame->contentRenderer()->hitTest(result); |
if (!request.readOnly()) |
m_frame->document()->updateHoverActiveState(request, result.innerElement()); |
@@ -1060,8 +1060,8 @@ void EventHandler::updateCursor() |
m_frame->document()->updateLayout(); |
HitTestRequest request(HitTestRequest::ReadOnly); |
- HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition)); |
- layoutView->hitTest(request, result); |
+ HitTestResult result(request, view->rootFrameToContents(m_lastKnownMousePosition)); |
+ layoutView->hitTest(result); |
OptionalCursor optionalCursor = selectCursor(result); |
if (optionalCursor.isCursorChange()) { |
@@ -1397,7 +1397,7 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event) |
RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); |
MaximumDurationTracker maxDurationTracker(&m_maxMouseMovedDuration); |
- HitTestResult hoveredNode = HitTestResult(LayoutPoint()); |
+ HitTestResult hoveredNode = HitTestResult(); |
bool result = handleMouseMoveOrLeaveEvent(event, &hoveredNode); |
Page* page = m_frame->page(); |
@@ -1473,7 +1473,7 @@ bool EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMouseEvent& mouseEv |
if (m_touchPressed) |
hitType |= HitTestRequest::Active | HitTestRequest::ReadOnly; |
HitTestRequest request(hitType); |
- MouseEventWithHitTestResults mev = MouseEventWithHitTestResults(mouseEvent, HitTestResult(LayoutPoint())); |
+ MouseEventWithHitTestResults mev = MouseEventWithHitTestResults(mouseEvent, HitTestResult(request, LayoutPoint())); |
// We don't want to do a hit-test in forceLeave scenarios because there might actually be some other frame above this one at the specified co-ordinate. |
// So we must force the hit-test to fail, while still clearing hover/active state. |
@@ -2043,8 +2043,8 @@ bool EventHandler::handleWheelEvent(const PlatformWheelEvent& event) |
LayoutPoint vPoint = view->rootFrameToContents(event.position()); |
HitTestRequest request(HitTestRequest::ReadOnly); |
- HitTestResult result(vPoint); |
- doc->layoutView()->hitTest(request, result); |
+ HitTestResult result(request, vPoint); |
+ doc->layoutView()->hitTest(result); |
Node* node = result.innerNode(); |
// Wheel events should not dispatch to text nodes. |
@@ -2251,8 +2251,8 @@ bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE |
FrameView* view = m_frame->view(); |
LayoutPoint viewPoint = view->rootFrameToContents(gestureEvent.position()); |
HitTestRequest request(HitTestRequest::ReadOnly); |
- HitTestResult result(viewPoint); |
- document->layoutView()->hitTest(request, result); |
+ HitTestResult result(request, viewPoint); |
+ document->layoutView()->hitTest(result); |
eventTarget = result.innerNode(); |
@@ -2948,9 +2948,10 @@ bool EventHandler::sendContextMenuEventForKey() |
targetNode = doc; |
// Use the focused node as the target for hover and active. |
- HitTestResult result(locationInRootFrame); |
+ HitTestRequest request(HitTestRequest::Active); |
+ HitTestResult result(request, locationInRootFrame); |
result.setInnerNode(targetNode); |
- doc->updateHoverActiveState(HitTestRequest::Active, result.innerElement()); |
+ doc->updateHoverActiveState(request, result.innerElement()); |
// The contextmenu event is a mouse event even when invoked using the keyboard. |
// This is required for web compatibility. |
@@ -3096,8 +3097,8 @@ void EventHandler::hoverTimerFired(Timer<EventHandler>*) |
if (LayoutView* renderer = m_frame->contentRenderer()) { |
if (FrameView* view = m_frame->view()) { |
HitTestRequest request(HitTestRequest::Move); |
- HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition)); |
- renderer->hitTest(request, result); |
+ HitTestResult result(request, view->rootFrameToContents(m_lastKnownMousePosition)); |
+ renderer->hitTest(result); |
m_frame->document()->updateHoverActiveState(request, result.innerElement()); |
} |
} |
@@ -3355,8 +3356,8 @@ bool EventHandler::handleDrag(const MouseEventWithHitTestResults& event, DragIni |
if (m_mouseDownMayStartDrag) { |
HitTestRequest request(HitTestRequest::ReadOnly); |
- HitTestResult result(m_mouseDownPos); |
- m_frame->contentRenderer()->hitTest(request, result); |
+ HitTestResult result(request, m_mouseDownPos); |
+ m_frame->contentRenderer()->hitTest(result); |
Node* node = result.innerNode(); |
if (node) { |
DragController::SelectionDragPolicy selectionDragPolicy = event.event().timestamp() - m_mouseDownTimestamp < TextDragDelay |
@@ -3637,7 +3638,7 @@ static const AtomicString& eventNameForTouchPointState(PlatformTouchPoint::State |
HitTestResult EventHandler::hitTestResultInFrame(LocalFrame* frame, const LayoutPoint& point, HitTestRequest::HitTestRequestType hitType) |
{ |
- HitTestResult result(point); |
+ HitTestResult result(HitTestRequest(hitType), point); |
if (!frame || !frame->contentRenderer()) |
return result; |
@@ -3646,7 +3647,7 @@ HitTestResult EventHandler::hitTestResultInFrame(LocalFrame* frame, const Layout |
if (!rect.contains(roundedIntPoint(point))) |
return result; |
} |
- frame->contentRenderer()->hitTest(HitTestRequest(hitType), result); |
+ frame->contentRenderer()->hitTest(result); |
return result; |
} |