Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f72d588a05aa866762a1cf414496ad92a57f1237
      
https://github.com/WebKit/WebKit/commit/f72d588a05aa866762a1cf414496ad92a57f1237
  Author: Richard Robinson <richard_robins...@apple.com>
  Date:   2023-03-13 (Mon, 13 Mar 2023)

  Changed paths:
    M 
LayoutTests/fast/scrolling/mac/keyboard-scrolling-with-mouse-scroll-expected.txt
    M LayoutTests/fast/scrolling/mac/keyboard-scrolling-with-mouse-scroll.html
    M LayoutTests/platform/mac-wk2/TestExpectations
    M Source/WebCore/page/scrolling/ScrollingTree.cpp
    M Source/WebCore/page/scrolling/ScrollingTree.h
    M Source/WebCore/platform/KeyboardScrollingAnimator.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.h
    M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h
    M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm

  Log Message:
  -----------
  [UI-side compositing] Keyboard scroll should not start if a wheel gesture 
event is in progress
https://bugs.webkit.org/show_bug.cgi?id=253726
rdar://106563114

Reviewed by Simon Fraser.

Wheel event scrolls should always take precedence over keyboard scrolls. 
Without UI Side Compositing,
this currently works by stopping any keyboard scrolls whenever any wheel event 
is received. For
keyboard scrolling with UI Side Compositing enabled, this is not an ideal 
mechanism. Instead, a
keyboard scroll should never begin in the first place if a wheel event gesture 
scroll is in progress.

There already exists ways to know if a wheel event gesture scroll is in 
progress on iOS, so this PR
just brings the same logic to macOS. Then, when a keyboard scroll is about to 
begin, it bails out
if there is a wheel event gesture scroll in progress.

This PR also improves and fixes the flakyness of the existing layout test which 
tests this
functionality, and makes it work when UI-side compositing is enabled or 
disabled.

* Source/WebCore/platform/KeyboardScrollingAnimator.cpp:
(WebCore::KeyboardScrollingAnimator::beginKeyboardScrollGesture):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartScroll):
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndScroll):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeWillStartScroll): 
Deleted.
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidEndScroll): 
Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::scrollingTreeNodeWillStartScroll):
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidEndScroll):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::scrollingTreeNodeWillStartScroll): 
Deleted.
(WebKit::RemoteScrollingCoordinatorProxyIOS::scrollingTreeNodeDidEndScroll): 
Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.cpp:
(WebKit::RemoteScrollingTreeIOS::scrollingTreeNodeWillStartScroll): Deleted.
(WebKit::RemoteScrollingTreeIOS::scrollingTreeNodeDidEndScroll): Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
(WebKit::RemoteScrollingTreeMac::handleWheelEventPhase):

Canonical link: https://commits.webkit.org/261581@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to