Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 81451dabde97ba73cbed2abc4c4be64957aa20f6
      
https://github.com/WebKit/WebKit/commit/81451dabde97ba73cbed2abc4c4be64957aa20f6
  Author: Nikolaos Mouchtaris <nmouchta...@apple.com>
  Date:   2024-03-20 (Wed, 20 Mar 2024)

  Changed paths:
    A 
LayoutTests/fast/scrolling/mac/scrollable-area-size-for-overlay-scrollbars-expected.txt
    A 
LayoutTests/fast/scrolling/mac/scrollable-area-size-for-overlay-scrollbars.html
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
    M Source/WebCore/platform/Scrollbar.cpp
    M Source/WebCore/platform/Scrollbar.h
    M Source/WebCore/platform/ScrollbarsController.cpp
    M Source/WebCore/platform/ScrollbarsController.h
    M Source/WebCore/platform/mac/ScrollbarsControllerMac.h
    M Source/WebCore/platform/mac/ScrollbarsControllerMac.mm
    M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
    M Source/WebCore/testing/Internals.cpp
    M Source/WebCore/testing/Internals.h
    M Source/WebCore/testing/Internals.idl
    M Source/WebCore/testing/Internals.mm
    M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h
    M 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm
    M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h
    M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.mm
    M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

  Log Message:
  -----------
  REGRESSION (UI-side compositing) changing between non-overlay and overlay 
scrollbars should adjust the size of the scrollable area
https://bugs.webkit.org/show_bug.cgi?id=263618
rdar://117507268

Reviewed by Simon Fraser.

This patch fixes a couple bugs related to switching back and forth dynamically 
between
overlay and non-overlay scrollbars. First, setFrameScrollingNodeState() was not 
always
called when switching the default, so iterate through each page and call
LocalFrameView::overlayScrollbarDefaultDidChange to force a scrolling commit to 
plumb
across this state change. Second, when we get the state change on the 
ui-process side,
we call _updateAllScrollerImpPairsForNewRecommendedScrollerStyle, which 
notifies all the
scroller imp pairs in the process of the new style. On the web process side, we 
had code
to adjust the scrollbar thickness and force a relayout, which now doesn't work 
since there
are no NSScrollerImpPairs in the web process. Instead, replicate this code in
RemoteScrollbarsController and loop through the scrollable areas in the 
FrameView. This
takes care of updating scrollable areas with overflow, while
https://github.com/WebKit/WebKit/pull/19561 will take care of updating 
scrollable areas
without overflow. Also add some additional testing infrastructure to compare 
the size of
the scrollable area before and after toggling scrollbar style.

* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::usesOverlayScrollbars const):
(WebCore::LocalFrameView::overlayScrollbarDefaultDidChange):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
* Source/WebCore/page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::scrollingTreeNodeMarkScrollbarStyleChange):
(WebCore::ScrollingTree::scrollingTreeNodesWithScrollbarStyleChange):
(WebCore::ScrollingTree::clearScrollingTreeNodesWithScrollbarStyleChange):
* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::markHasScrollbarStyleChange):
* Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:
* Source/WebCore/page/scrolling/mac/ScrollerPairMac.mm:
(-[WebScrollerImpPairDelegateMac 
scrollerImpPair:updateScrollerStyleForNewRecommendedScrollerStyle:]):
* Source/WebCore/platform/Scrollbar.cpp:
(WebCore::Scrollbar::updateScrollbarThickness):
* Source/WebCore/platform/Scrollbar.h:
* Source/WebCore/platform/ScrollbarsController.cpp:
(WebCore::ScrollbarsController::updateScrollbarsThickness):
* Source/WebCore/platform/ScrollbarsController.h:
(WebCore::ScrollbarsController::updateScrollerStyle):
* Source/WebCore/platform/mac/ScrollbarsControllerMac.h:
* Source/WebCore/platform/mac/ScrollbarsControllerMac.mm:
(WebCore::ScrollbarsControllerMac::updateScrollerStyle):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingNodesHaveScrollbarStyleChange):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxyMac::didCommitLayerTree):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
(WebKit::RemoteScrollingTreeMac::scrollingTreeNodeMarkScrollbarStyleChange):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h:
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.mm:
(WebKit::macScrollbarTheme):
(WebKit::RemoteScrollbarsController::updateScrollerStyle):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.h:
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.messages.in:
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
(WebKit::RemoteScrollingCoordinator::scrollingTreeNodesHaveScrollbarsWithStyleChange):
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::scrollerStylePreferenceChanged):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to