Index: sky/engine/core/page/EventHandler.cpp |
diff --git a/sky/engine/core/page/EventHandler.cpp b/sky/engine/core/page/EventHandler.cpp |
index 4710a6f7c875cf598f2ed7aa4667638738ae200c..cd3f8c79704e9debb2d52aed1acd96b08384c28e 100644 |
--- a/sky/engine/core/page/EventHandler.cpp |
+++ b/sky/engine/core/page/EventHandler.cpp |
@@ -443,12 +443,10 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR |
// Don't restart the selection when the mouse is pressed on an |
// existing selection so we can allow for text dragging. |
- if (FrameView* view = m_frame->view()) { |
- LayoutPoint vPoint = view->windowToContents(event.event().position()); |
- if (!extendSelection && m_frame->selection().contains(vPoint)) { |
- m_mouseDownWasSingleClickInSelection = true; |
- return false; |
- } |
+ LayoutPoint vPoint = event.event().position(); |
+ if (!extendSelection && m_frame->selection().contains(vPoint)) { |
+ m_mouseDownWasSingleClickInSelection = true; |
+ return false; |
} |
VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(event.localPoint())); |
@@ -516,11 +514,6 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve |
m_frame->document()->updateLayoutIgnorePendingStylesheets(); |
- if (ScrollView* scrollView = m_frame->view()) { |
- if (scrollView->isPointInScrollbarCorner(event.event().position())) |
- return false; |
- } |
- |
bool singleClick = event.event().clickCount() <= 1; |
// If we got the event back, that must mean it wasn't prevented, |
@@ -615,7 +608,7 @@ void EventHandler::updateSelectionForMouseDrag() |
return; |
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::Move); |
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition)); |
+ HitTestResult result(m_lastKnownMousePosition); |
renderer->hitTest(request, result); |
updateSelectionForMouseDrag(result); |
} |
@@ -810,10 +803,6 @@ bool EventHandler::bubblingScroll(ScrollDirection direction, ScrollGranularity g |
m_frame->document()->updateLayoutIgnorePendingStylesheets(); |
if (scroll(direction, granularity, startingNode)) |
return true; |
- LocalFrame* frame = m_frame; |
- FrameView* view = frame->view(); |
- if (view && view->scroll(direction, granularity)) |
- return true; |
return false; |
} |
@@ -854,7 +843,7 @@ void EventHandler::updateCursor() |
m_frame->document()->updateLayout(); |
HitTestRequest request(HitTestRequest::ReadOnly); |
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition)); |
+ HitTestResult result(m_lastKnownMousePosition); |
renderView->hitTest(request, result); |
OptionalCursor optionalCursor = selectCursor(result); |
@@ -1032,10 +1021,8 @@ OptionalCursor EventHandler::selectAutoCursor(const HitTestResult& result, Node* |
static LayoutPoint documentPointForWindowPoint(LocalFrame* frame, const IntPoint& windowPoint) |
{ |
- FrameView* view = frame->view(); |
- // FIXME: Is it really OK to use the wrong coordinates here when view is 0? |
- // Historically the code would just crash; this is clearly no worse than that. |
- return view ? view->windowToContents(windowPoint) : windowPoint; |
+ // FIXME(sky): remove |
+ return windowPoint; |
} |
bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) |
@@ -1057,9 +1044,10 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) |
m_mouseDownMayStartDrag = false; |
m_mouseDownMayStartSelect = false; |
m_mouseDownMayStartAutoscroll = false; |
- if (FrameView* view = m_frame->view()) |
- m_mouseDownPos = view->windowToContents(mouseEvent.position()); |
+ if (m_frame->view()) |
+ m_mouseDownPos = mouseEvent.position(); |
else { |
+ // FIXME(sky): Why do we have this else block at all? |
invalidateClick(); |
return false; |
} |
@@ -1083,16 +1071,14 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent) |
m_clickCount = mouseEvent.clickCount(); |
m_clickNode = mev.targetNode()->isTextNode() ? NodeRenderingTraversal::parent(mev.targetNode()) : mev.targetNode(); |
- if (FrameView* view = m_frame->view()) { |
- RenderLayer* layer = mev.targetNode()->renderer() ? mev.targetNode()->renderer()->enclosingLayer() : 0; |
- IntPoint p = view->windowToContents(mouseEvent.position()); |
- if (layer && layer->scrollableArea() && layer->scrollableArea()->isPointInResizeControl(p, ResizerForPointer)) { |
- m_resizeScrollableArea = layer->scrollableArea(); |
- m_resizeScrollableArea->setInResizeMode(true); |
- m_offsetFromResizeCorner = m_resizeScrollableArea->offsetFromResizeCorner(p); |
- invalidateClick(); |
- return true; |
- } |
+ RenderLayer* layer = mev.targetNode()->renderer() ? mev.targetNode()->renderer()->enclosingLayer() : 0; |
+ IntPoint p = mouseEvent.position(); |
+ if (layer && layer->scrollableArea() && layer->scrollableArea()->isPointInResizeControl(p, ResizerForPointer)) { |
+ m_resizeScrollableArea = layer->scrollableArea(); |
+ m_resizeScrollableArea->setInResizeMode(true); |
+ m_offsetFromResizeCorner = m_resizeScrollableArea->offsetFromResizeCorner(p); |
+ invalidateClick(); |
+ return true; |
} |
m_frame->selection().setCaretBlinkingSuspended(true); |
@@ -1169,9 +1155,6 @@ bool EventHandler::handleMouseMoveEvent(const PlatformMouseEvent& event) |
layerScrollableArea->mouseMovedInContentArea(); |
} |
- if (FrameView* frameView = m_frame->view()) |
- frameView->mouseMovedInContentArea(); |
- |
page->chrome().mouseDidMoveOverElement(hoveredNode, event.modifierFlags()); |
page->chrome().setToolTip(hoveredNode); |
@@ -1233,12 +1216,7 @@ bool EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMouseEvent& mouseEv |
if (m_resizeScrollableArea && m_resizeScrollableArea->inResizeMode()) |
m_resizeScrollableArea->resize(mouseEvent, m_offsetFromResizeCorner); |
else { |
- if (FrameView* view = m_frame->view()) |
- scrollbar = view->scrollbarAtPoint(mouseEvent.position()); |
- |
- if (!scrollbar) |
- scrollbar = mev.scrollbar(); |
- |
+ scrollbar = mev.scrollbar(); |
updateLastScrollbarUnderMouse(scrollbar, !m_mousePressed); |
if (onlyUpdateScrollbars) |
return true; |
@@ -1402,25 +1380,13 @@ void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo |
RenderLayer* layerForNodeUnderMouse = layerForNode(m_nodeUnderMouse.get()); |
Page* page = m_frame->page(); |
- if (m_lastNodeUnderMouse && (!m_nodeUnderMouse || m_nodeUnderMouse->document() != m_frame->document())) { |
- // The mouse has moved between frames. |
- if (LocalFrame* frame = m_lastNodeUnderMouse->document().frame()) { |
- if (FrameView* frameView = frame->view()) |
- frameView->mouseExitedContentArea(); |
- } |
- } else if (page && (layerForLastNode && (!layerForNodeUnderMouse || layerForNodeUnderMouse != layerForLastNode))) { |
+ if (page && (layerForLastNode && (!layerForNodeUnderMouse || layerForNodeUnderMouse != layerForLastNode))) { |
// The mouse has moved between layers. |
if (ScrollableArea* scrollableAreaForLastNode = associatedScrollableArea(layerForLastNode)) |
scrollableAreaForLastNode->mouseExitedContentArea(); |
} |
- if (m_nodeUnderMouse && (!m_lastNodeUnderMouse || m_lastNodeUnderMouse->document() != m_frame->document())) { |
- // The mouse has moved between frames. |
- if (LocalFrame* frame = m_nodeUnderMouse->document().frame()) { |
- if (FrameView* frameView = frame->view()) |
- frameView->mouseEnteredContentArea(); |
- } |
- } else if (page && (layerForNodeUnderMouse && (!layerForLastNode || layerForNodeUnderMouse != layerForLastNode))) { |
+ if (page && (layerForNodeUnderMouse && (!layerForLastNode || layerForNodeUnderMouse != layerForLastNode))) { |
// The mouse has moved between layers. |
if (ScrollableArea* scrollableAreaForNodeUnderMouse = associatedScrollableArea(layerForNodeUnderMouse)) |
scrollableAreaForNodeUnderMouse->mouseEnteredContentArea(); |
@@ -1453,12 +1419,6 @@ bool EventHandler::dispatchMouseEvent(const AtomicString& eventType, Node* targe |
// The return value means 'swallow event' (was handled), as for other handle* functions. |
bool EventHandler::handleMouseFocus(const PlatformMouseEvent& mouseEvent) |
{ |
- // If clicking on a frame scrollbar, do not mess up with content focus. |
- if (FrameView* view = m_frame->view()) { |
- if (view->scrollbarAtPoint(mouseEvent.position())) |
- return false; |
- } |
- |
// The layout needs to be up to date to determine if an element is focusable. |
m_frame->document()->updateLayoutIgnorePendingStylesheets(); |
@@ -1540,7 +1500,7 @@ bool EventHandler::handleWheelEvent(const PlatformWheelEvent& event) |
if (!view) |
return false; |
- LayoutPoint vPoint = view->windowToContents(event.position()); |
+ LayoutPoint vPoint = event.position(); |
HitTestRequest request(HitTestRequest::ReadOnly); |
HitTestResult result(vPoint); |
@@ -1624,8 +1584,6 @@ bool EventHandler::handleGestureShowPress() |
FrameView* view = m_frame->view(); |
if (!view) |
return false; |
- if (ScrollAnimator* scrollAnimator = view->existingScrollAnimator()) |
- scrollAnimator->cancelAnimations(); |
const FrameView::ScrollableAreaSet* areas = view->scrollableAreas(); |
if (!areas) |
return false; |
@@ -1720,8 +1678,7 @@ bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE |
if (!document->renderView()) |
return false; |
- FrameView* view = m_frame->view(); |
- LayoutPoint viewPoint = view->windowToContents(gestureEvent.position()); |
+ LayoutPoint viewPoint = gestureEvent.position(); |
HitTestRequest request(HitTestRequest::ReadOnly); |
HitTestResult result(viewPoint); |
document->renderView()->hitTest(request, result); |
@@ -1733,8 +1690,6 @@ bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE |
m_previousGestureScrolledNode = nullptr; |
if (!scrollbar) |
- scrollbar = view->scrollbarAtPoint(gestureEvent.position()); |
- if (!scrollbar) |
scrollbar = result.scrollbar(); |
} |
@@ -1798,7 +1753,7 @@ bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target |
// We use the adjusted position so the application isn't surprised to see a event with |
// co-ordinates outside the target's bounds. |
- IntPoint adjustedPoint = m_frame->view()->windowToContents(gestureEvent.position()); |
+ IntPoint adjustedPoint = gestureEvent.position(); |
PlatformMouseEvent fakeMouseMove(adjustedPoint, gestureEvent.globalPosition(), |
NoButton, PlatformEvent::MouseMoved, /* clickCount */ 0, |
@@ -1862,7 +1817,7 @@ bool EventHandler::handleGestureLongPress(const GestureEventWithHitTestResults& |
bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()->touchEditingEnabled(); |
#endif |
if (shouldLongPressSelectWord) { |
- IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.position()); |
+ IntPoint hitTestPoint = gestureEvent.position(); |
HitTestResult result = hitTestResultAtPoint(hitTestPoint); |
Node* innerNode = result.targetNode(); |
if (!result.isLiveLink() && innerNode && (innerNode->isContentEditable() || innerNode->isTextNode())) { |
@@ -1884,7 +1839,7 @@ bool EventHandler::handleGestureLongTap(const GestureEventWithHitTestResults& ta |
bool EventHandler::handleScrollGestureOnResizer(Node* eventTarget, const PlatformGestureEvent& gestureEvent) { |
if (gestureEvent.type() == PlatformEvent::GestureScrollBegin) { |
RenderLayer* layer = eventTarget->renderer() ? eventTarget->renderer()->enclosingLayer() : 0; |
- IntPoint p = m_frame->view()->windowToContents(gestureEvent.position()); |
+ IntPoint p = gestureEvent.position(); |
if (layer && layer->scrollableArea() && layer->scrollableArea()->isPointInResizeControl(p, ResizerForTouch)) { |
m_resizeScrollableArea = layer->scrollableArea(); |
m_resizeScrollableArea->setInResizeMode(true); |
@@ -2076,8 +2031,7 @@ bool EventHandler::bestClickableNodeForHitTestResult(const HitTestResult& result |
bool EventHandler::bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode) |
{ |
- IntPoint hitTestPoint = m_frame->view()->windowToContents(touchCenter); |
- HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::ReadOnly | HitTestRequest::Active, touchRadius); |
+ HitTestResult result = hitTestResultAtPoint(touchCenter, HitTestRequest::ReadOnly | HitTestRequest::Active, touchRadius); |
IntRect touchRect(touchCenter - touchRadius, touchRadius + touchRadius); |
WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes; |
@@ -2110,20 +2064,12 @@ GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe |
// Perform the rect-based hit-test. Note that we don't yet apply hover/active state here |
// because we need to resolve touch adjustment first so that we apply hover/active it to |
// the final adjusted node. |
- IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.position()); |
+ IntPoint hitTestPoint = gestureEvent.position(); |
IntSize touchRadius = gestureEvent.area(); |
touchRadius.scale(1.f / 2); |
// FIXME: We should not do a rect-based hit-test if touch adjustment is disabled. |
HitTestResult hitTestResult = hitTestResultAtPoint(hitTestPoint, hitType | HitTestRequest::ReadOnly, touchRadius); |
- // Hit-test the main frame scrollbars (in addition to the child-frame and RenderLayer |
- // scroll bars checked by the hit-test code. |
- if (!hitTestResult.scrollbar()) { |
- if (FrameView* view = m_frame->view()) { |
- hitTestResult.setScrollbar(view->scrollbarAtPoint(gestureEvent.position())); |
- } |
- } |
- |
// Adjust the location of the gesture to the most likely nearby node, as appropriate for the |
// type of event. |
PlatformGestureEvent adjustedEvent = gestureEvent; |
@@ -2137,13 +2083,7 @@ GestureEventWithHitTestResults EventHandler::targetGestureEvent(const PlatformGe |
LocalFrame* hitFrame = hitTestResult.innerNodeFrame(); |
if (!hitFrame) |
hitFrame = m_frame; |
- hitTestResult = hitTestResultInFrame(hitFrame, hitFrame->view()->windowToContents(adjustedEvent.position()), hitType | HitTestRequest::ReadOnly); |
- // FIXME: HitTest entry points should really check for main frame scrollbars themselves. |
- if (!hitTestResult.scrollbar()) { |
- if (FrameView* view = m_frame->view()) { |
- hitTestResult.setScrollbar(view->scrollbarAtPoint(gestureEvent.position())); |
- } |
- } |
+ hitTestResult = hitTestResultInFrame(hitFrame, adjustedEvent.position(), hitType | HitTestRequest::ReadOnly); |
} |
// Now apply hover/active state to the final target. |
@@ -2214,7 +2154,7 @@ void EventHandler::applyTouchAdjustment(PlatformGestureEvent* gestureEvent, HitT |
// Update the hit-test result to be a point-based result instead of a rect-based result. |
// FIXME: We should do this even when no candidate matches the node filter. crbug.com/398914 |
if (adjusted) { |
- hitTestResult->resolveRectBasedTest(adjustedNode, m_frame->view()->windowToContents(adjustedPoint)); |
+ hitTestResult->resolveRectBasedTest(adjustedNode, adjustedPoint); |
gestureEvent->applyTouchAdjustment(adjustedPoint); |
} |
} |
@@ -2263,7 +2203,7 @@ void EventHandler::dispatchFakeMouseMoveEventSoonInQuad(const FloatQuad& quad) |
if (!view) |
return; |
- if (!quad.containsPoint(view->windowToContents(m_lastKnownMousePosition))) |
+ if (!quad.containsPoint(m_lastKnownMousePosition)) |
return; |
dispatchFakeMouseMoveEventSoon(); |
@@ -2322,12 +2262,10 @@ void EventHandler::hoverTimerFired(Timer<EventHandler>*) |
ASSERT(m_frame->document()); |
if (RenderView* renderer = m_frame->contentRenderer()) { |
- if (FrameView* view = m_frame->view()) { |
- HitTestRequest request(HitTestRequest::Move); |
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition)); |
- renderer->hitTest(request, result); |
- m_frame->document()->updateHoverActiveState(request, result.innerElement()); |
- } |
+ HitTestRequest request(HitTestRequest::Move); |
+ HitTestResult result(m_lastKnownMousePosition); |
+ renderer->hitTest(request, result); |
+ m_frame->document()->updateHoverActiveState(request, result.innerElement()); |
} |
} |
@@ -2471,7 +2409,7 @@ bool EventHandler::dragHysteresisExceeded(const IntPoint& dragViewportLocation) |
FrameView* view = m_frame->view(); |
if (!view) |
return false; |
- IntPoint dragLocation = view->windowToContents(dragViewportLocation); |
+ IntPoint dragLocation = dragViewportLocation; |
IntSize delta = dragLocation - m_mouseDownPos; |
int threshold = 3; |
@@ -2541,21 +2479,8 @@ void EventHandler::setFrameWasScrolledByUser() |
bool EventHandler::passMousePressEventToScrollbar(MouseEventWithHitTestResults& mev) |
{ |
- // First try to use the frame scrollbar. |
- FrameView* view = m_frame->view(); |
- Scrollbar* scrollbar = view ? view->scrollbarAtPoint(mev.event().position()) : 0; |
- |
- // Then try the scrollbar in the hit test. |
- if (!scrollbar) |
- scrollbar = mev.scrollbar(); |
- |
- updateLastScrollbarUnderMouse(scrollbar, true); |
- |
- if (!scrollbar || !scrollbar->enabled()) |
- return false; |
- setFrameWasScrolledByUser(); |
- scrollbar->mouseDown(mev.event()); |
- return true; |
+ // FIXME(sky): Remove |
+ return false; |
} |
// If scrollbar (under mouse) is different from last, send a mouse exited. Set |
@@ -2660,12 +2585,12 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) |
// to hit-test on touchstart, and it can be read-only. |
if (point.state() == PlatformTouchPoint::TouchPressed) { |
HitTestRequest::HitTestRequestType hitType = HitTestRequest::TouchEvent | HitTestRequest::ReadOnly | HitTestRequest::Active; |
- LayoutPoint pagePoint = roundedLayoutPoint(m_frame->view()->windowToContents(point.pos())); |
+ LayoutPoint pagePoint = roundedLayoutPoint(point.pos()); |
HitTestResult result; |
if (!m_touchSequenceDocument) { |
result = hitTestResultAtPoint(pagePoint, hitType); |
} else if (m_touchSequenceDocument->frame()) { |
- LayoutPoint framePoint = roundedLayoutPoint(m_touchSequenceDocument->frame()->view()->windowToContents(point.pos())); |
+ LayoutPoint framePoint = roundedLayoutPoint(point.pos()); |
result = hitTestResultInFrame(m_touchSequenceDocument->frame(), framePoint, hitType); |
} else |
continue; |
@@ -2783,9 +2708,7 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event) |
} |
ASSERT(targetFrame); |
- // pagePoint should always be relative to the target elements |
- // containing frame. |
- FloatPoint pagePoint = targetFrame->view()->windowToContents(point.pos()); |
+ FloatPoint pagePoint = point.pos(); |
float scaleFactor = 1.0f / targetFrame->pageZoomFactor(); |