Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: Source/core/page/EventHandler.cpp

Issue 1056983004: OverscrollGlow for mainThread-{BLINK CHANGES} (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/page/EventHandler.h ('k') | Source/platform/scroll/ScrollAnimator.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 , m_selectionInitiationState(HaveNotStartedSelection) 225 , m_selectionInitiationState(HaveNotStartedSelection)
226 , m_hoverTimer(this, &EventHandler::hoverTimerFired) 226 , m_hoverTimer(this, &EventHandler::hoverTimerFired)
227 , m_cursorUpdateTimer(this, &EventHandler::cursorUpdateTimerFired) 227 , m_cursorUpdateTimer(this, &EventHandler::cursorUpdateTimerFired)
228 , m_mouseDownMayStartAutoscroll(false) 228 , m_mouseDownMayStartAutoscroll(false)
229 , m_fakeMouseMoveEventTimer(this, &EventHandler::fakeMouseMoveEventTimerFire d) 229 , m_fakeMouseMoveEventTimer(this, &EventHandler::fakeMouseMoveEventTimerFire d)
230 , m_svgPan(false) 230 , m_svgPan(false)
231 , m_resizeScrollableArea(nullptr) 231 , m_resizeScrollableArea(nullptr)
232 , m_eventHandlerWillResetCapturingMouseEventsNode(0) 232 , m_eventHandlerWillResetCapturingMouseEventsNode(0)
233 , m_clickCount(0) 233 , m_clickCount(0)
234 , m_shouldOnlyFireDragOverEvent(false) 234 , m_shouldOnlyFireDragOverEvent(false)
235 , m_accumulatedRootOverscroll(FloatSize())
235 , m_mousePositionIsUnknown(true) 236 , m_mousePositionIsUnknown(true)
236 , m_mouseDownTimestamp(0) 237 , m_mouseDownTimestamp(0)
237 , m_widgetIsLatched(false) 238 , m_widgetIsLatched(false)
238 , m_touchPressed(false) 239 , m_touchPressed(false)
239 , m_scrollGestureHandlingNode(nullptr) 240 , m_scrollGestureHandlingNode(nullptr)
240 , m_lastGestureScrollOverWidget(false) 241 , m_lastGestureScrollOverWidget(false)
241 , m_maxMouseMovedDuration(0) 242 , m_maxMouseMovedDuration(0)
242 , m_longTapShouldInvokeContextMenu(false) 243 , m_longTapShouldInvokeContextMenu(false)
243 , m_activeIntervalTimer(this, &EventHandler::activeIntervalTimerFired) 244 , m_activeIntervalTimer(this, &EventHandler::activeIntervalTimerFired)
244 , m_lastShowPressTimestamp(0) 245 , m_lastShowPressTimestamp(0)
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 917
917 return result; 918 return result;
918 } 919 }
919 920
920 void EventHandler::stopAutoscroll() 921 void EventHandler::stopAutoscroll()
921 { 922 {
922 if (AutoscrollController* controller = autoscrollController()) 923 if (AutoscrollController* controller = autoscrollController())
923 controller->stopAutoscroll(); 924 controller->stopAutoscroll();
924 } 925 }
925 926
926 bool EventHandler::scroll(ScrollDirection direction, ScrollGranularity granulari ty, Node* startNode, Node** stopNode, float delta, IntPoint absolutePoint) 927 ScrollResultOneDimensional EventHandler::scroll(ScrollDirection direction, Scrol lGranularity granularity, Node* startNode, Node** stopNode, float delta, IntPoin t absolutePoint)
927 { 928 {
928 if (!delta) 929 if (!delta)
929 return false; 930 return ScrollResultOneDimensional(false);
930 931
931 Node* node = startNode; 932 Node* node = startNode;
932 933
933 if (!node) 934 if (!node)
934 node = m_frame->document()->focusedElement(); 935 node = m_frame->document()->focusedElement();
935 936
936 if (!node) 937 if (!node)
937 node = m_mousePressNode.get(); 938 node = m_mousePressNode.get();
938 939
939 if (!node || !node->layoutObject()) 940 if (!node || !node->layoutObject())
940 return false; 941 return ScrollResultOneDimensional(false, delta);
941 942
942 LayoutBox* curBox = node->layoutObject()->enclosingBox(); 943 LayoutBox* curBox = node->layoutObject()->enclosingBox();
943 while (curBox && !curBox->isLayoutView()) { 944 while (curBox && !curBox->isLayoutView()) {
944 ScrollDirectionPhysical physicalDirection = toPhysicalDirection( 945 ScrollDirectionPhysical physicalDirection = toPhysicalDirection(
945 direction, curBox->isHorizontalWritingMode(), curBox->style()->isFli ppedBlocksWritingMode()); 946 direction, curBox->isHorizontalWritingMode(), curBox->style()->isFli ppedBlocksWritingMode());
946 947
947 // If we're at the stopNode, we should try to scroll it but we shouldn't bubble past it 948 // If we're at the stopNode, we should try to scroll it but we shouldn't bubble past it
948 bool shouldStopBubbling = stopNode && *stopNode && curBox->node() == *st opNode; 949 bool shouldStopBubbling = stopNode && *stopNode && curBox->node() == *st opNode;
949 bool didScroll = curBox->scroll(physicalDirection, granularity, delta); 950 ScrollResultOneDimensional result = curBox->scroll(physicalDirection, gr anularity, delta);
950 951
951 if (didScroll && stopNode) 952 if (result.didScroll && stopNode)
952 *stopNode = curBox->node(); 953 *stopNode = curBox->node();
953 954
954 if (didScroll || shouldStopBubbling) { 955 if (result.didScroll || shouldStopBubbling) {
955 setFrameWasScrolledByUser(); 956 setFrameWasScrolledByUser();
956 return true; 957 result.didScroll = true;
958 return result;
957 } 959 }
958 960
959 curBox = curBox->containingBlock(); 961 curBox = curBox->containingBlock();
960 } 962 }
961 963
962 return false; 964 return ScrollResultOneDimensional(false, delta);
963 } 965 }
964 966
965 void EventHandler::customizedScroll(const Node& startNode, ScrollState& scrollSt ate) 967 void EventHandler::customizedScroll(const Node& startNode, ScrollState& scrollSt ate)
966 { 968 {
967 if (scrollState.fullyConsumed()) 969 if (scrollState.fullyConsumed())
968 return; 970 return;
969 971
970 if (m_currentScrollChain.isEmpty()) 972 if (m_currentScrollChain.isEmpty())
971 recomputeScrollChain(*m_frame, startNode, m_currentScrollChain); 973 recomputeScrollChain(*m_frame, startNode, m_currentScrollChain);
972 scrollState.setScrollChain(m_currentScrollChain); 974 scrollState.setScrollChain(m_currentScrollChain);
973 scrollState.distributeToScrollChainDescendant(); 975 scrollState.distributeToScrollChainDescendant();
974 } 976 }
975 977
976 bool EventHandler::bubblingScroll(ScrollDirection direction, ScrollGranularity g ranularity, Node* startingNode) 978 bool EventHandler::bubblingScroll(ScrollDirection direction, ScrollGranularity g ranularity, Node* startingNode)
977 { 979 {
978 // The layout needs to be up to date to determine if we can scroll. We may b e 980 // The layout needs to be up to date to determine if we can scroll. We may b e
979 // here because of an onLoad event, in which case the final layout hasn't be en performed yet. 981 // here because of an onLoad event, in which case the final layout hasn't be en performed yet.
980 m_frame->document()->updateLayoutIgnorePendingStylesheets(); 982 m_frame->document()->updateLayoutIgnorePendingStylesheets();
981 // FIXME: enable scroll customization in this case. See crbug.com/410974. 983 // FIXME: enable scroll customization in this case. See crbug.com/410974.
982 if (scroll(direction, granularity, startingNode)) 984 if (scroll(direction, granularity, startingNode).didScroll)
983 return true; 985 return true;
984 LocalFrame* frame = m_frame; 986 LocalFrame* frame = m_frame;
985 FrameView* view = frame->view(); 987 FrameView* view = frame->view();
986 if (view) { 988 if (view) {
987 ScrollDirectionPhysical physicalDirection = 989 ScrollDirectionPhysical physicalDirection =
988 toPhysicalDirection(direction, view->isVerticalDocument(), view->isF lippedDocument()); 990 toPhysicalDirection(direction, view->isVerticalDocument(), view->isF lippedDocument());
989 if (view->scrollableArea()->userScroll(physicalDirection, granularity)) { 991 if (view->scrollableArea()->userScroll(physicalDirection, granularity).d idScroll) {
990 setFrameWasScrolledByUser(); 992 setFrameWasScrolledByUser();
991 return true; 993 return true;
992 } 994 }
993 } 995 }
994 996
995 Frame* parentFrame = frame->tree().parent(); 997 Frame* parentFrame = frame->tree().parent();
996 if (!parentFrame || !parentFrame->isLocalFrame()) 998 if (!parentFrame || !parentFrame->isLocalFrame())
997 return false; 999 return false;
998 // FIXME: Broken for OOPI. 1000 // FIXME: Broken for OOPI.
999 return toLocalFrame(parentFrame)->eventHandler().bubblingScroll(direction, g ranularity, m_frame->deprecatedLocalOwner()); 1001 return toLocalFrame(parentFrame)->eventHandler().bubblingScroll(direction, g ranularity, m_frame->deprecatedLocalOwner());
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after
2170 if (node && !node->dispatchWheelEvent(event)) 2172 if (node && !node->dispatchWheelEvent(event))
2171 RETURN_WHEEL_EVENT_HANDLED(); 2173 RETURN_WHEEL_EVENT_HANDLED();
2172 } 2174 }
2173 2175
2174 // We do another check on the frame view because the event handler can run 2176 // We do another check on the frame view because the event handler can run
2175 // JS which results in the frame getting destroyed. 2177 // JS which results in the frame getting destroyed.
2176 view = m_frame->view(); 2178 view = m_frame->view();
2177 if (!view) 2179 if (!view)
2178 return false; 2180 return false;
2179 2181
2180 if (view->scrollableArea()->handleWheel(event).didScroll) 2182 if (view->scrollableArea()->handleWheel(event).didScroll())
2181 RETURN_WHEEL_EVENT_HANDLED(); 2183 RETURN_WHEEL_EVENT_HANDLED();
2182 2184
2183 return false; 2185 return false;
2184 #undef RETURN_WHEEL_EVENT_HANDLED 2186 #undef RETURN_WHEEL_EVENT_HANDLED
2185 } 2187 }
2186 2188
2187 void EventHandler::defaultWheelEventHandler(Node* startNode, WheelEvent* wheelEv ent) 2189 void EventHandler::defaultWheelEventHandler(Node* startNode, WheelEvent* wheelEv ent)
2188 { 2190 {
2189 if (!startNode || !wheelEvent) 2191 if (!startNode || !wheelEvent)
2190 return; 2192 return;
2191 2193
2192 // When the wheelEvent do not scroll, we trigger zoom in/out instead. 2194 // When the wheelEvent do not scroll, we trigger zoom in/out instead.
2193 if (!wheelEvent->canScroll()) 2195 if (!wheelEvent->canScroll())
2194 return; 2196 return;
2195 2197
2196 Node* stopNode = m_previousWheelScrolledNode.get(); 2198 Node* stopNode = m_previousWheelScrolledNode.get();
2197 ScrollGranularity granularity = wheelGranularityToScrollGranularity(wheelEve nt); 2199 ScrollGranularity granularity = wheelGranularityToScrollGranularity(wheelEve nt);
2198 IntPoint absolutePosition = roundedIntPoint(wheelEvent->absoluteLocation()); 2200 IntPoint absolutePosition = roundedIntPoint(wheelEvent->absoluteLocation());
2199 2201
2200 // Break up into two scrolls if we need to. Diagonal movement on 2202 // Break up into two scrolls if we need to. Diagonal movement on
2201 // a MacBook pro is an example of a 2-dimensional mouse wheel event (where b oth deltaX and deltaY can be set). 2203 // a MacBook pro is an example of a 2-dimensional mouse wheel event (where b oth deltaX and deltaY can be set).
2202 2204
2203 // FIXME: enable scroll customization in this case. See crbug.com/410974. 2205 // FIXME: enable scroll customization in this case. See crbug.com/410974.
2204 if (wheelEvent->railsMode() != Event::RailsModeVertical 2206 if (wheelEvent->railsMode() != Event::RailsModeVertical
2205 && scroll(ScrollRightIgnoringWritingMode, granularity, startNode, &stopN ode, wheelEvent->deltaX(), absolutePosition)) 2207 && scroll(ScrollRightIgnoringWritingMode, granularity, startNode, &stopN ode, wheelEvent->deltaX(), absolutePosition).didScroll)
2206 wheelEvent->setDefaultHandled(); 2208 wheelEvent->setDefaultHandled();
2207 2209
2208 if (wheelEvent->railsMode() != Event::RailsModeHorizontal 2210 if (wheelEvent->railsMode() != Event::RailsModeHorizontal
2209 && scroll(ScrollDownIgnoringWritingMode, granularity, startNode, &stopNo de, wheelEvent->deltaY(), absolutePosition)) 2211 && scroll(ScrollDownIgnoringWritingMode, granularity, startNode, &stopNo de, wheelEvent->deltaY(), absolutePosition).didScroll)
2210 wheelEvent->setDefaultHandled(); 2212 wheelEvent->setDefaultHandled();
2211 2213
2212 if (!m_latchedWheelEventNode) 2214 if (!m_latchedWheelEventNode)
2213 m_previousWheelScrolledNode = stopNode; 2215 m_previousWheelScrolledNode = stopNode;
2214 } 2216 }
2215 2217
2216 bool EventHandler::handleGestureShowPress() 2218 bool EventHandler::handleGestureShowPress()
2217 { 2219 {
2218 m_lastShowPressTimestamp = WTF::currentTime(); 2220 m_lastShowPressTimestamp = WTF::currentTime();
2219 2221
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
2600 if (node) { 2602 if (node) {
2601 passScrollGestureEventToWidget(gestureEvent, node->layoutObject()); 2603 passScrollGestureEventToWidget(gestureEvent, node->layoutObject());
2602 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) { 2604 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) {
2603 RefPtrWillBeRawPtr<ScrollState> scrollState = ScrollState::create( 2605 RefPtrWillBeRawPtr<ScrollState> scrollState = ScrollState::create(
2604 0, 0, 0, 0, 0, gestureEvent.inertial(), /* isBeginning */ 2606 0, 0, 0, 0, 0, gestureEvent.inertial(), /* isBeginning */
2605 false, /* isEnding */ true, /* fromUserInput */ true); 2607 false, /* isEnding */ true, /* fromUserInput */ true);
2606 customizedScroll(*node.get(), *scrollState); 2608 customizedScroll(*node.get(), *scrollState);
2607 } 2609 }
2608 } 2610 }
2609 2611
2610 clearGestureScrollNodes(); 2612 clearGestureScrollState();
2611 return false; 2613 return false;
2612 } 2614 }
2613 2615
2614 bool EventHandler::handleGestureScrollBegin(const PlatformGestureEvent& gestureE vent) 2616 bool EventHandler::handleGestureScrollBegin(const PlatformGestureEvent& gestureE vent)
2615 { 2617 {
2616 Document* document = m_frame->document(); 2618 Document* document = m_frame->document();
2617 if (!document->layoutView()) 2619 if (!document->layoutView())
2618 return false; 2620 return false;
2619 2621
2620 FrameView* view = m_frame->view(); 2622 FrameView* view = m_frame->view();
(...skipping 20 matching lines...) Expand all
2641 0, 0, 0, 0, 0, /* inInertialPhase */ false, /* isBeginning */ 2643 0, 0, 0, 0, 0, /* inInertialPhase */ false, /* isBeginning */
2642 true, /* isEnding */ false, /* fromUserInput */ true); 2644 true, /* isEnding */ false, /* fromUserInput */ true);
2643 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState); 2645 customizedScroll(*m_scrollGestureHandlingNode.get(), *scrollState);
2644 } else { 2646 } else {
2645 if (m_frame->isMainFrame()) 2647 if (m_frame->isMainFrame())
2646 m_frame->host()->topControls().scrollBegin(); 2648 m_frame->host()->topControls().scrollBegin();
2647 } 2649 }
2648 return true; 2650 return true;
2649 } 2651 }
2650 2652
2653 void EventHandler::resetOverscroll(bool didScrollX, bool didScrollY, FloatSize& unusedDelta)
bokan 2015/06/04 12:05:42 I don't think you need to reset unusedDelta. The f
MuVen 2015/06/04 14:01:19 Done.
2654 {
2655 if (didScrollX) {
2656 m_accumulatedRootOverscroll.setWidth(0);
2657 unusedDelta.setWidth(0);
2658 }
2659 if (didScrollY) {
2660 m_accumulatedRootOverscroll.setHeight(0);
2661 unusedDelta.setHeight(0);
2662 }
2663 }
2664
2651 bool EventHandler::handleGestureScrollUpdate(const PlatformGestureEvent& gesture Event) 2665 bool EventHandler::handleGestureScrollUpdate(const PlatformGestureEvent& gesture Event)
2652 { 2666 {
2653 ASSERT(gestureEvent.type() == PlatformEvent::GestureScrollUpdate); 2667 ASSERT(gestureEvent.type() == PlatformEvent::GestureScrollUpdate);
2654 2668
2655 FloatSize delta(gestureEvent.deltaX(), gestureEvent.deltaY()); 2669 FloatSize delta(gestureEvent.deltaX(), gestureEvent.deltaY());
2656 if (delta.isZero()) 2670 if (delta.isZero())
2657 return false; 2671 return false;
2658 2672
2659 Node* node = m_scrollGestureHandlingNode.get(); 2673 Node* node = m_scrollGestureHandlingNode.get();
2674 FloatSize unusedDelta;
2660 if (node) { 2675 if (node) {
2661 LayoutObject* layoutObject = node->layoutObject(); 2676 LayoutObject* layoutObject = node->layoutObject();
2662 if (!layoutObject) 2677 if (!layoutObject)
2663 return false; 2678 return false;
2664 2679
2665 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view()); 2680 RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
2666 2681
2667 Node* stopNode = nullptr; 2682 Node* stopNode = nullptr;
2668 2683
2669 // Try to send the event to the correct view. 2684 // Try to send the event to the correct view.
(...skipping 30 matching lines...) Expand all
2700 m_previousGestureScrolledNode = scrollState->currentNativeScrollingE lement(); 2715 m_previousGestureScrolledNode = scrollState->currentNativeScrollingE lement();
2701 m_deltaConsumedForScrollSequence = scrollState->deltaConsumedForScro llSequence(); 2716 m_deltaConsumedForScrollSequence = scrollState->deltaConsumedForScro llSequence();
2702 scrolled = scrollState->deltaX() != gestureEvent.deltaX() 2717 scrolled = scrollState->deltaX() != gestureEvent.deltaX()
2703 || scrollState->deltaY() != gestureEvent.deltaY(); 2718 || scrollState->deltaY() != gestureEvent.deltaY();
2704 } else { 2719 } else {
2705 if (gestureEvent.preventPropagation()) 2720 if (gestureEvent.preventPropagation())
2706 stopNode = m_previousGestureScrolledNode.get(); 2721 stopNode = m_previousGestureScrolledNode.get();
2707 2722
2708 // First try to scroll the closest scrollable LayoutBox ancestor of |node|. 2723 // First try to scroll the closest scrollable LayoutBox ancestor of |node|.
2709 ScrollGranularity granularity = ScrollByPrecisePixel; 2724 ScrollGranularity granularity = ScrollByPrecisePixel;
2710 bool horizontalScroll = scroll(ScrollLeftIgnoringWritingMode, granul arity, node, &stopNode, delta.width()); 2725 ScrollResultOneDimensional result = scroll(ScrollLeftIgnoringWriting Mode, granularity, node, &stopNode, delta.width());
2726 bool horizontalScroll = result.didScroll;
2711 if (!gestureEvent.preventPropagation()) 2727 if (!gestureEvent.preventPropagation())
2712 stopNode = nullptr; 2728 stopNode = nullptr;
2713 bool verticalScroll = scroll(ScrollUpIgnoringWritingMode, granularit y, node, &stopNode, delta.height()); 2729 result = scroll(ScrollUpIgnoringWritingMode, granularity, node, &sto pNode, delta.height());
2730 bool verticalScroll = result.didScroll;
2714 scrolled = horizontalScroll || verticalScroll; 2731 scrolled = horizontalScroll || verticalScroll;
2715 2732
2716 if (gestureEvent.preventPropagation()) 2733 if (gestureEvent.preventPropagation())
2717 m_previousGestureScrolledNode = stopNode; 2734 m_previousGestureScrolledNode = stopNode;
2735
2736 resetOverscroll(horizontalScroll, verticalScroll, unusedDelta);
2718 } 2737 }
2719 if (scrolled) { 2738 if (scrolled) {
2720 setFrameWasScrolledByUser(); 2739 setFrameWasScrolledByUser();
2721 return true; 2740 return true;
2722 } 2741 }
2723 } 2742 }
2724 2743
2725 if (RuntimeEnabledFeatures::scrollCustomizationEnabled()) 2744 if (RuntimeEnabledFeatures::scrollCustomizationEnabled())
2726 return false; 2745 return false;
2727 2746
2728 // Try to scroll the frame view. 2747 // Try to scroll the frame view.
2729 if (m_frame->applyScrollDelta(delta, false)) { 2748 ScrollResult scrollResult = m_frame->applyScrollDelta(delta, false);
2749 if (m_frame->isMainFrame() && m_frame->view() && m_frame->view()->scrollable Area()) {
2750 ScrollableArea* scrollablearea = m_frame->view()->scrollableArea();
2751 // Set unusedDelta if axes is scrollable, else set 0 to ensure overflow is not reported on non-scrollable axes.
2752 unusedDelta.setWidth(scrollablearea->scrollSize(HorizontalScrollbar) ? s crollResult.unusedScrollDeltaX : 0);
2753 unusedDelta.setHeight(scrollablearea->scrollSize(VerticalScrollbar) ? sc rollResult.unusedScrollDeltaY : 0);
2754 resetOverscroll(scrollResult.didScrollX, scrollResult.didScrollY, unused Delta);
2755 if (unusedDelta != FloatSize()) {
2756 m_accumulatedRootOverscroll += unusedDelta;
2757 FloatPoint position = FloatPoint(gestureEvent.position().x(), gestur eEvent.position().y());
2758 FloatSize velocity = FloatSize(gestureEvent.velocityX(), gestureEven t.velocityY());
2759 m_frame->chromeClient().didOverscroll(unusedDelta, m_accumulatedRoot Overscroll, position, velocity);
2760 }
2761 }
2762 if (scrollResult.didScroll()) {
2730 setFrameWasScrolledByUser(); 2763 setFrameWasScrolledByUser();
2731 return true; 2764 return true;
2732 } 2765 }
2733 2766
2734 return false; 2767 return false;
2735 } 2768 }
2736 2769
2737 void EventHandler::clearGestureScrollNodes() 2770 void EventHandler::clearGestureScrollState()
2738 { 2771 {
2739 m_scrollGestureHandlingNode = nullptr; 2772 m_scrollGestureHandlingNode = nullptr;
2740 m_previousGestureScrolledNode = nullptr; 2773 m_previousGestureScrolledNode = nullptr;
2741 m_deltaConsumedForScrollSequence = false; 2774 m_deltaConsumedForScrollSequence = false;
2742 m_currentScrollChain.clear(); 2775 m_currentScrollChain.clear();
2776 m_accumulatedRootOverscroll = FloatSize();
2743 } 2777 }
2744 2778
2745 bool EventHandler::isScrollbarHandlingGestures() const 2779 bool EventHandler::isScrollbarHandlingGestures() const
2746 { 2780 {
2747 return m_scrollbarHandlingScrollGesture.get(); 2781 return m_scrollbarHandlingScrollGesture.get();
2748 } 2782 }
2749 2783
2750 bool EventHandler::shouldApplyTouchAdjustment(const PlatformGestureEvent& event) const 2784 bool EventHandler::shouldApplyTouchAdjustment(const PlatformGestureEvent& event) const
2751 { 2785 {
2752 if (m_frame->settings() && !m_frame->settings()->touchAdjustmentEnabled()) 2786 if (m_frame->settings() && !m_frame->settings()->touchAdjustmentEnabled())
(...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after
3635 void EventHandler::defaultSpaceEventHandler(KeyboardEvent* event) 3669 void EventHandler::defaultSpaceEventHandler(KeyboardEvent* event)
3636 { 3670 {
3637 ASSERT(event->type() == EventTypeNames::keypress); 3671 ASSERT(event->type() == EventTypeNames::keypress);
3638 3672
3639 if (event->ctrlKey() || event->metaKey() || event->altKey()) 3673 if (event->ctrlKey() || event->metaKey() || event->altKey())
3640 return; 3674 return;
3641 3675
3642 ScrollDirection direction = event->shiftKey() ? ScrollBlockDirectionBackward : ScrollBlockDirectionForward; 3676 ScrollDirection direction = event->shiftKey() ? ScrollBlockDirectionBackward : ScrollBlockDirectionForward;
3643 3677
3644 // FIXME: enable scroll customization in this case. See crbug.com/410974. 3678 // FIXME: enable scroll customization in this case. See crbug.com/410974.
3645 if (scroll(direction, ScrollByPage)) { 3679 if (scroll(direction, ScrollByPage).didScroll) {
3646 event->setDefaultHandled(); 3680 event->setDefaultHandled();
3647 return; 3681 return;
3648 } 3682 }
3649 3683
3650 FrameView* view = m_frame->view(); 3684 FrameView* view = m_frame->view();
3651 if (!view) 3685 if (!view)
3652 return; 3686 return;
3653 3687
3654 ScrollDirectionPhysical physicalDirection = 3688 ScrollDirectionPhysical physicalDirection =
3655 toPhysicalDirection(direction, view->isVerticalDocument(), view->isFlipp edDocument()); 3689 toPhysicalDirection(direction, view->isVerticalDocument(), view->isFlipp edDocument());
3656 3690
3657 if (view->scrollableArea()->userScroll(physicalDirection, ScrollByPage)) 3691 if (view->scrollableArea()->userScroll(physicalDirection, ScrollByPage).didS croll)
3658 event->setDefaultHandled(); 3692 event->setDefaultHandled();
3659 } 3693 }
3660 3694
3661 void EventHandler::defaultBackspaceEventHandler(KeyboardEvent* event) 3695 void EventHandler::defaultBackspaceEventHandler(KeyboardEvent* event)
3662 { 3696 {
3663 ASSERT(event->type() == EventTypeNames::keydown); 3697 ASSERT(event->type() == EventTypeNames::keydown);
3664 3698
3665 if (event->ctrlKey() || event->metaKey() || event->altKey()) 3699 if (event->ctrlKey() || event->metaKey() || event->altKey())
3666 return; 3700 return;
3667 3701
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
4170 unsigned EventHandler::accessKeyModifiers() 4204 unsigned EventHandler::accessKeyModifiers()
4171 { 4205 {
4172 #if OS(MACOSX) 4206 #if OS(MACOSX)
4173 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; 4207 return PlatformEvent::CtrlKey | PlatformEvent::AltKey;
4174 #else 4208 #else
4175 return PlatformEvent::AltKey; 4209 return PlatformEvent::AltKey;
4176 #endif 4210 #endif
4177 } 4211 }
4178 4212
4179 } // namespace blink 4213 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/page/EventHandler.h ('k') | Source/platform/scroll/ScrollAnimator.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698