Changeset 267002 in webkit
- Timestamp:
- Sep 13, 2020, 1:30:59 PM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 20 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/page/FrameView.cpp (modified) (1 diff)
-
WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (modified) (1 diff)
-
WebCore/page/scrolling/AsyncScrollingCoordinator.h (modified) (1 diff)
-
WebCore/page/scrolling/ScrollingCoordinator.h (modified) (1 diff)
-
WebCore/page/scrolling/ScrollingTree.cpp (modified) (1 diff)
-
WebCore/page/scrolling/ScrollingTree.h (modified) (2 diffs)
-
WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp (modified) (1 diff)
-
WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm (modified) (2 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h (modified) (1 diff)
-
WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm (modified) (1 diff)
-
WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h (modified) (3 diffs)
-
WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm (modified) (2 diffs)
-
WebCore/platform/ScrollAnimator.cpp (modified) (1 diff)
-
WebCore/platform/cocoa/ScrollController.h (modified) (4 diffs)
-
WebCore/platform/cocoa/ScrollController.mm (modified) (9 diffs)
-
WebCore/rendering/RenderLayer.cpp (modified) (2 diffs)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r267001 r267002 1 2020-09-13 Simon Fraser <simon.fraser@apple.com> 2 3 Overflow:scroll rubberbanding is interrupted by post-layout scrolling 4 https://bugs.webkit.org/show_bug.cgi?id=216463 5 <rdar://problem/67095741> 6 7 Reviewed by Darin Adler. 8 9 When rubberbanding overflow:scroll RenderLayer has an overscrolled scroll offset. 10 If RenderLayer::updateScrollInfoAfterLayout() happens when in this state, it can 11 clamp the scroll offset, causing the rubberband to collapse which interferes with 12 the user interaction. This happend on Gmail when composing a reply. 13 14 Fix by tracking the rubberbanding state in the scrolling tree, and having RenderLayer 15 query this state via the ScrollingCoordinator. RenderLayer::updateScrollInfoAfterLayout() 16 already tested isRubberBandInProgress(). This is similar to how isUserScrollInProgress() 17 and isScrollSnapInProgress() work. 18 19 This patch also fixes the tracking of rubberbanding state. Previously setMainFrameIsRubberBanding() 20 was just based on when the timer was started and stopped, which did not match the 21 implementation of ScrollController::isRubberBandInProgress(). Now ScrollController 22 correctly notifies its clients when the rubberbanding state changes by updating that 23 state whenever any of the conditions consulted in isRubberBandInProgressInternal() change. 24 25 I tried to make tests for this, but the timing of wheel and scroll event delivery makes 26 reliable detection of interrupted rubberbands impossible in WebKitTestRunner. 27 28 * page/FrameView.cpp: 29 (WebCore::FrameView::isRubberBandInProgress const): 30 * page/scrolling/AsyncScrollingCoordinator.cpp: 31 (WebCore::AsyncScrollingCoordinator::isRubberBandInProgress const): 32 * page/scrolling/AsyncScrollingCoordinator.h: 33 * page/scrolling/ScrollingCoordinator.h: 34 (WebCore::ScrollingCoordinator::isRubberBandInProgress const): 35 * page/scrolling/ScrollingTree.cpp: 36 (WebCore::ScrollingTree::isRubberBandInProgressForNode): 37 (WebCore::ScrollingTree::setRubberBandingInProgressForNode): 38 (WebCore::ScrollingTree::isRubberBandInProgress): Deleted. 39 (WebCore::ScrollingTree::setMainFrameIsRubberBanding): Deleted. 40 * page/scrolling/ScrollingTree.h: 41 * page/scrolling/ScrollingTreeScrollingNode.cpp: 42 (WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren): 43 * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: 44 (WebCore::ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged): 45 (WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinAndRubberbandState): 46 * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h: 47 * page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm: 48 (WebCore::ScrollingTreeOverflowScrollingNodeMac::currentScrollPositionChanged): 49 * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h: 50 * page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm: 51 (WebCore::ScrollingTreeScrollingNodeDelegateMac::currentScrollPositionChanged): 52 (WebCore::ScrollingTreeScrollingNodeDelegateMac::isRubberBandInProgress const): 53 (WebCore::ScrollingTreeScrollingNodeDelegateMac::didStopRubberbandSnapAnimation): 54 (WebCore::ScrollingTreeScrollingNodeDelegateMac::rubberBandingStateChanged): 55 * platform/ScrollAnimator.cpp: 56 (WebCore::ScrollAnimator::notifyPositionChanged): 57 * platform/cocoa/ScrollController.h: 58 (WebCore::ScrollControllerClient::rubberBandingStateChanged): 59 * platform/cocoa/ScrollController.mm: 60 (WebCore::ScrollController::handleWheelEvent): 61 (WebCore::ScrollController::snapRubberBandTimerFired): 62 (WebCore::ScrollController::scrollPositionChanged): 63 (WebCore::ScrollController::isRubberBandInProgress const): 64 (WebCore::ScrollController::stopSnapRubberbandTimer): 65 (WebCore::ScrollController::isRubberBandInProgressInternal const): 66 (WebCore::ScrollController::updateRubberBandingState): 67 (WebCore::ScrollController::updateGestureInProgressState): 68 * rendering/RenderLayer.cpp: 69 (WebCore::RenderLayer::isRubberBandInProgress const): 70 (WebCore::RenderLayer::updateScrollInfoAfterLayout): 71 1 72 2020-09-13 Zalan Bujtas <zalan@apple.com> 2 73 -
trunk/Source/WebCore/page/FrameView.cpp
r266691 r267002 2633 2633 if (auto scrollingCoordinator = this->scrollingCoordinator()) { 2634 2634 if (!scrollingCoordinator->shouldUpdateScrollLayerPositionSynchronously(*this)) 2635 return scrollingCoordinator->isRubberBandInProgress( );2635 return scrollingCoordinator->isRubberBandInProgress(scrollingNodeID()); 2636 2636 } 2637 2637 -
trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
r266846 r267002 840 840 } 841 841 842 bool AsyncScrollingCoordinator::isRubberBandInProgress( ) const842 bool AsyncScrollingCoordinator::isRubberBandInProgress(ScrollingNodeID nodeID) const 843 843 { 844 844 if (m_scrollingTree) 845 return m_scrollingTree->isRubberBandInProgress ();845 return m_scrollingTree->isRubberBandInProgressForNode(nodeID); 846 846 847 847 return false; -
trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h
r266846 r267002 130 130 131 131 WEBCORE_EXPORT bool isUserScrollInProgress(ScrollingNodeID) const override; 132 bool isRubberBandInProgress( ) const override;132 bool isRubberBandInProgress(ScrollingNodeID) const override; 133 133 134 134 #if ENABLE(CSS_SCROLL_SNAP) -
trunk/Source/WebCore/page/scrolling/ScrollingCoordinator.h
r266846 r267002 171 171 virtual String scrollingStateTreeAsText(ScrollingStateTreeAsTextBehavior = ScrollingStateTreeAsTextBehaviorNormal) const; 172 172 virtual String scrollingTreeAsText(ScrollingStateTreeAsTextBehavior = ScrollingStateTreeAsTextBehaviorNormal) const; 173 virtual bool isRubberBandInProgress( ) const { return false; }173 virtual bool isRubberBandInProgress(ScrollingNodeID) const { return false; } 174 174 virtual bool isUserScrollInProgress(ScrollingNodeID) const { return false; } 175 175 virtual bool isScrollSnapInProgress(ScrollingNodeID) const { return false; } -
trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp
r266336 r267002 466 466 467 467 // Can be called from the main thread. 468 bool ScrollingTree::isRubberBandInProgress() 469 { 468 bool ScrollingTree::isRubberBandInProgressForNode(ScrollingNodeID nodeID) 469 { 470 if (!nodeID) 471 return false; 472 470 473 LockHolder lock(m_treeStateMutex); 471 return m_treeState. mainFrameIsRubberBanding;472 } 473 474 void ScrollingTree::set MainFrameIsRubberBanding(bool isRubberBanding)474 return m_treeState.nodesWithActiveRubberBanding.contains(nodeID); 475 } 476 477 void ScrollingTree::setRubberBandingInProgressForNode(ScrollingNodeID nodeID, bool isRubberBanding) 475 478 { 476 479 LockHolder locker(m_treeStateMutex); 477 m_treeState.mainFrameIsRubberBanding = isRubberBanding; 480 if (isRubberBanding) 481 m_treeState.nodesWithActiveRubberBanding.add(nodeID); 482 else 483 m_treeState.nodesWithActiveRubberBanding.remove(nodeID); 478 484 } 479 485 -
trunk/Source/WebCore/page/scrolling/ScrollingTree.h
r266292 r267002 93 93 WEBCORE_EXPORT virtual WheelEventHandlingResult handleWheelEvent(const PlatformWheelEvent&); 94 94 95 void setMainFrameIsRubberBanding(bool);96 bool isRubberBandInProgress();95 bool isRubberBandInProgressForNode(ScrollingNodeID); 96 void setRubberBandingInProgressForNode(ScrollingNodeID, bool); 97 97 98 98 bool isUserScrollInProgressForNode(ScrollingNodeID); … … 258 258 PlatformDisplayID displayID { 0 }; 259 259 Optional<unsigned> nominalFramesPerSecond; 260 HashSet<ScrollingNodeID> nodesWithActiveRubberBanding; 260 261 HashSet<ScrollingNodeID> nodesWithActiveScrollSnap; 261 262 HashSet<ScrollingNodeID> nodesWithActiveUserScrolls; 262 bool mainFrameIsRubberBanding { false };263 263 }; 264 264 -
trunk/Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp
r266390 r267002 55 55 56 56 if (state.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)) { 57 if (scrollingTree().isRubberBandInProgress ())57 if (scrollingTree().isRubberBandInProgressForNode(scrollingNodeID())) 58 58 m_totalContentsSizeForRubberBand = m_totalContentsSize; 59 59 else -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm
r264008 r267002 144 144 LOG_WITH_STREAM(Scrolling, stream << "ScrollingTreeFrameScrollingNodeMac::currentScrollPositionChanged to " << currentScrollPosition() << " min: " << minimumScrollPosition() << " max: " << maximumScrollPosition() << " sync: " << hasSynchronousScrollingReasons()); 145 145 146 m_delegate.currentScrollPositionChanged(); 147 146 148 if (isRootNode()) 147 149 updateMainFramePinAndRubberbandState(); … … 225 227 { 226 228 ASSERT(isRootNode()); 227 228 229 scrollingTree().setMainFramePinnedState(edgePinnedState()); 229 scrollingTree().setMainFrameIsRubberBanding(isRubberBanding());230 230 } 231 231 -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h
r262294 r267002 48 48 FloatPoint adjustedScrollPosition(const FloatPoint&, ScrollClamping) const override; 49 49 50 void currentScrollPositionChanged(ScrollingLayerPositionAction) final; 51 50 52 void repositionScrollingLayers() override; 51 53 void repositionRelatedLayers() override; -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm
r264008 r267002 87 87 } 88 88 89 void ScrollingTreeOverflowScrollingNodeMac::currentScrollPositionChanged(ScrollingLayerPositionAction action) 90 { 91 ScrollingTreeOverflowScrollingNode::currentScrollPositionChanged(action); 92 m_delegate.currentScrollPositionChanged(); 93 } 94 89 95 FloatPoint ScrollingTreeOverflowScrollingNodeMac::adjustedScrollPosition(const FloatPoint& position, ScrollClamping clamp) const 90 96 { -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h
r264008 r267002 51 51 52 52 bool handleWheelEvent(const PlatformWheelEvent&); 53 54 void currentScrollPositionChanged(); 53 55 54 56 #if ENABLE(CSS_SCROLL_SNAP) … … 59 61 bool isScrollSnapInProgress() const; 60 62 #endif 63 64 bool isRubberBandInProgress() const; 61 65 62 66 void updateFromStateNode(const ScrollingStateScrollingNode&); … … 81 85 void immediateScrollByWithoutContentEdgeConstraints(const FloatSize&) final; 82 86 void didStopRubberbandSnapAnimation() final; 87 void rubberBandingStateChanged(bool) final; 83 88 void adjustScrollPositionToBoundsIfNecessary() final; 84 89 -
trunk/Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
r266333 r267002 161 161 } 162 162 163 void ScrollingTreeScrollingNodeDelegateMac::currentScrollPositionChanged() 164 { 165 m_scrollController.scrollPositionChanged(); 166 } 167 168 bool ScrollingTreeScrollingNodeDelegateMac::isRubberBandInProgress() const 169 { 170 return m_scrollController.isRubberBandInProgress(); 171 } 172 163 173 bool ScrollingTreeScrollingNodeDelegateMac::isScrollSnapInProgress() const 164 174 { … … 313 323 void ScrollingTreeScrollingNodeDelegateMac::didStopRubberbandSnapAnimation() 314 324 { 315 scrollingTree().setMainFrameIsRubberBanding(false);316 317 325 // Since the rubberband timer has stopped, totalContentsSizeForRubberBand can be synchronized with totalContentsSize. 318 326 scrollingNode().setTotalContentsSizeForRubberBand(totalContentsSize()); 327 } 328 329 void ScrollingTreeScrollingNodeDelegateMac::rubberBandingStateChanged(bool inRubberBand) 330 { 331 scrollingTree().setRubberBandingInProgressForNode(scrollingNode().scrollingNodeID(), inRubberBand); 319 332 } 320 333 -
trunk/Source/WebCore/platform/ScrollAnimator.cpp
r266390 r267002 223 223 // FIXME: need to not map back and forth all the time. 224 224 m_scrollableArea.setScrollOffsetFromAnimation(m_scrollableArea.scrollOffsetFromPosition(roundedIntPoint(currentPosition()))); 225 226 #if ENABLE(CSS_SCROLL_SNAP) || ENABLE(RUBBER_BANDING) 227 m_scrollController.scrollPositionChanged(); 228 #endif 225 229 } 226 230 -
trunk/Source/WebCore/platform/cocoa/ScrollController.h
r264891 r267002 84 84 virtual void immediateScrollBy(const FloatSize&) = 0; 85 85 virtual void immediateScrollByWithoutContentEdgeConstraints(const FloatSize&) = 0; 86 86 87 virtual void willStartRubberBandSnapAnimation() { } 87 88 virtual void didStopRubberbandSnapAnimation() { } 88 89 90 virtual void rubberBandingStateChanged(bool) { } 91 89 92 // If the current scroll position is within the overhang area, this function will cause 90 93 // the page to scroll to the nearest boundary point. … … 143 146 bool isRubberBandInProgress() const; 144 147 bool isScrollSnapInProgress() const; 148 149 void scrollPositionChanged(); 145 150 146 151 #if ENABLE(CSS_SCROLL_SNAP) … … 176 181 bool shouldRubberBandInHorizontalDirection(const PlatformWheelEvent&) const; 177 182 bool shouldRubberBandInDirection(ScrollDirection) const; 183 184 bool isRubberBandInProgressInternal() const; 185 void updateRubberBandingState(); 178 186 #endif 179 187 … … 224 232 bool m_momentumScrollInProgress { false }; 225 233 bool m_ignoreMomentumScrolls { false }; 234 bool m_isRubberBanding { false }; 226 235 #endif 227 236 -
trunk/Source/WebCore/platform/cocoa/ScrollController.mm
r266337 r267002 149 149 150 150 stopSnapRubberbandTimer(); 151 151 updateRubberBandingState(); 152 152 return true; 153 153 } … … 155 155 if (wheelEvent.phase() == PlatformWheelEventPhaseEnded) { 156 156 snapRubberBand(); 157 updateRubberBandingState(); 157 158 return true; 158 159 } … … 322 323 } 323 324 325 updateRubberBandingState(); 326 324 327 return handled; 325 328 } … … 417 420 m_startStretch = { }; 418 421 m_origVelocity = { }; 422 423 updateRubberBandingState(); 419 424 return; 420 425 } … … 457 462 m_startTime = MonotonicTime::now(); 458 463 m_startStretch = { }; 459 if (!isRubberBandInProgress ())464 if (!isRubberBandInProgressInternal()) 460 465 stopSnapRubberbandTimer(); 461 466 } 462 } 463 #endif 467 468 updateRubberBandingState(); 469 } 470 #endif 471 472 void ScrollController::scrollPositionChanged() 473 { 474 #if ENABLE(RUBBER_BANDING) 475 updateRubberBandingState(); 476 #endif 477 } 464 478 465 479 bool ScrollController::usesScrollSnap() const … … 484 498 { 485 499 #if ENABLE(RUBBER_BANDING) && PLATFORM(MAC) 486 if (!m_inScrollGesture && !m_momentumScrollInProgress && !m_snapRubberbandTimer) 487 return false; 488 489 return !m_client.stretchAmount().isZero(); 500 return m_isRubberBanding; 490 501 #else 491 502 return false; … … 522 533 { 523 534 m_client.didStopRubberbandSnapAnimation(); 524 535 525 536 if (m_snapRubberbandTimer) { 526 537 m_snapRubberbandTimer->stop(); 527 538 m_snapRubberbandTimer = nullptr; 528 539 } 529 540 530 541 m_client.removeWheelEventTestCompletionDeferralForReason(reinterpret_cast<WheelEventTestMonitor::ScrollableAreaIdentifier>(this), WheelEventTestMonitor::RubberbandInProgress); 531 542 } … … 559 570 { 560 571 return m_client.shouldRubberBandInDirection(direction); 572 } 573 574 bool ScrollController::isRubberBandInProgressInternal() const 575 { 576 if (!m_inScrollGesture && !m_momentumScrollInProgress && !m_snapRubberbandTimer) 577 return false; 578 579 return !m_client.stretchAmount().isZero(); 580 } 581 582 void ScrollController::updateRubberBandingState() 583 { 584 bool isRubberBanding = isRubberBandInProgressInternal(); 585 if (isRubberBanding == m_isRubberBanding) 586 return; 587 588 m_isRubberBanding = isRubberBanding; 589 m_client.rubberBandingStateChanged(m_isRubberBanding); 561 590 } 562 591 … … 722 751 else if (wheelEvent.isEndOfNonMomentumScroll() || wheelEvent.isGestureCancel() || wheelEvent.isEndOfMomentumScroll()) 723 752 m_inScrollGesture = false; 753 754 updateRubberBandingState(); 724 755 } 725 756 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r266677 r267002 1910 1910 return false; 1911 1911 1912 if (auto scrollingCoordinator = page().scrollingCoordinator()) { 1913 if (scrollingCoordinator->isRubberBandInProgress(scrollingNodeID())) 1914 return true; 1915 } 1916 1912 1917 if (auto scrollAnimator = existingScrollAnimator()) 1913 1918 return scrollAnimator->isRubberBandInProgress(); … … 3914 3919 #endif 3915 3920 3916 if (!box->isHTMLMarquee() && !isRubberBandInProgress() ) {3921 if (!box->isHTMLMarquee() && !isRubberBandInProgress() && !isUserScrollInProgress()) { 3917 3922 // Layout may cause us to be at an invalid scroll position. In this case we need 3918 3923 // to pull our scroll offsets back to the max (or push them up to the min). -
trunk/Source/WebKit/ChangeLog
r266993 r267002 1 2020-09-13 Simon Fraser <simon.fraser@apple.com> 2 3 Overflow:scroll rubberbanding is interrupted by post-layout scrolling 4 https://bugs.webkit.org/show_bug.cgi?id=216463 5 <rdar://problem/67095741> 6 7 Reviewed by Darin Adler. 8 9 When rubberbanding overflow:scroll RenderLayer has an overscrolled scroll offset. 10 If RenderLayer::updateScrollInfoAfterLayout() happens when in this state, it can 11 clamp the scroll offset, causing the rubberband to collapse which interferes with 12 the user interaction. This happend on Gmail when composing a reply. 13 14 Fix by tracking the rubberbanding state in the scrolling tree, and having RenderLayer 15 query this state via the ScrollingCoordinator. RenderLayer::updateScrollInfoAfterLayout() 16 already tested isRubberBandInProgress(). This is similar to how isUserScrollInProgress() 17 and isScrollSnapInProgress() work. 18 19 This patch also fixes the tracking of rubberbanding state. Previously setMainFrameIsRubberBanding() 20 was just based on when the timer was started and stopped, which did not match the 21 implementation of ScrollController::isRubberBandInProgress(). Now ScrollController 22 correctly notifies its clients when the rubberbanding state changes by updating that 23 state whenever any of the conditions consulted in isRubberBandInProgressInternal() change. 24 25 * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h: 26 * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: 27 (WebKit::RemoteScrollingCoordinator::isRubberBandInProgress const): 28 (WebKit::RemoteScrollingCoordinator::scrollingStateInUIProcessChanged): 29 1 30 2020-09-13 Wenson Hsieh <wenson_hsieh@apple.com> 2 31 -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h
r264704 r267002 66 66 void scheduleTreeStateCommit() override; 67 67 68 bool isRubberBandInProgress() const override; 69 68 bool isRubberBandInProgress(WebCore::ScrollingNodeID) const final; 70 69 bool isUserScrollInProgress(WebCore::ScrollingNodeID) const final; 71 70 #if ENABLE(CSS_SCROLL_SNAP) … … 84 83 WebPage* m_webPage; 85 84 85 HashSet<WebCore::ScrollingNodeID> m_nodesWithActiveRubberBanding; 86 86 HashSet<WebCore::ScrollingNodeID> m_nodesWithActiveScrollSnap; 87 87 HashSet<WebCore::ScrollingNodeID> m_nodesWithActiveUserScrolls; -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm
r264704 r267002 73 73 } 74 74 75 bool RemoteScrollingCoordinator::isRubberBandInProgress( ) const75 bool RemoteScrollingCoordinator::isRubberBandInProgress(ScrollingNodeID nodeID) const 76 76 { 77 // FIXME: need to maintain state in the web process? 78 return false; 77 return m_nodesWithActiveRubberBanding.contains(nodeID); 79 78 } 80 79 … … 113 112 void RemoteScrollingCoordinator::scrollingStateInUIProcessChanged(const RemoteScrollingUIState& uiState) 114 113 { 114 // FIXME: Also track m_nodesWithActiveRubberBanding. 115 115 if (uiState.changes().contains(RemoteScrollingUIState::Changes::ScrollSnapNodes)) 116 116 m_nodesWithActiveScrollSnap = uiState.nodesWithActiveScrollSnap();
Note:
See TracChangeset
for help on using the changeset viewer.