[webkit-changes] [WebKit/WebKit] caec1d: [Ui-side compositing] Fix mouse position reporting...

Nikos Mouchtaris noreply at github.com
Fri Apr 14 16:44:36 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: caec1d312c597c37515751aedbec9433978fb627
      https://github.com/WebKit/WebKit/commit/caec1d312c597c37515751aedbec9433978fb627
  Author: Nikolaos Mouchtaris <nmouchtaris at apple.com>
  Date:   2023-04-14 (Fri, 14 Apr 2023)

  Changed paths:
    M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
    M Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp
    M Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h
    M Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h
    M Source/WebCore/page/scrolling/mac/ScrollerMac.h
    M Source/WebCore/page/scrolling/mac/ScrollerMac.mm
    M Source/WebCore/page/scrolling/mac/ScrollerPairMac.h
    M Source/WebCore/page/scrolling/mac/ScrollerPairMac.mm
    M Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h
    M Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
    M Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp

  Log Message:
  -----------
  [Ui-side compositing] Fix mouse position reporting to AppKit in WebScrollerImpPairDelegateMac
https://bugs.webkit.org/show_bug.cgi?id=255188
rdar://107776583

Reviewed by Simon Fraser.

This patch aims to fix several issues with the way ScrollerPairMac and ScrollerMac handle
mouse events, with the intent of fixing hovering over overlay scrollbars in overflow scrolling
nodes. The first issue is that currently there isn't a good way to convert the frame relative
mouse position to a scrollbar relative mouse position. To work around this, bundle the scrollbar
relative mouse positions in the mouseMovedInContentArea event. When we know that we have updated
mouse positions from the WebProcess, return them in the various WebScrollerImpPairDelegateMac
functions. The second issue is that RemoteScrollingTree is only calling handleMouseEvent
on the root scroller. Since this mouse position was only being used as input to convertContentPoint,
it is ok to just return a zero point and use the converted mouse position from the Web Process.

* Source/WebCore/page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::lastKnownMousePosition):
* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::lastKnownMousePosition const):
* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:
* Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:
(WebCore::ScrollingTreeScrollingNodeDelegate::lastKnownMousePosition const):
* Source/WebCore/page/scrolling/mac/ScrollerMac.mm:
(-[WebScrollerImpDelegateMac mouseLocationInScrollerForScrollerImp:]):
* Source/WebCore/page/scrolling/mac/ScrollerPairMac.h:
(WebCore::ScrollerPairMac::node const):
(WebCore::ScrollerPairMac::lastKnownMousePosition const): Deleted.
* Source/WebCore/page/scrolling/mac/ScrollerPairMac.mm:
(-[WebScrollerImpPairDelegateMac mouseLocationInContentAreaForScrollerImpPair:]):
(-[WebScrollerImpPairDelegateMac scrollerImpPair:convertContentPoint:toScrollerImp:]):
(WebCore::ScrollerPairMac::lastKnownMousePosition const):
* Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.h:
* Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::lastKnownMousePosition const):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
(WebKit::RemoteScrollingTreeMac::lastKnownMousePosition):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp:
(WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::lastKnownMousePosition):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.h:

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




More information about the webkit-changes mailing list