[webkit-changes] [WebKit/WebKit] 618b1e: [SwiftUI] Provide ability for clients to scroll a ...
Richard Robinson
noreply at github.com
Fri Feb 28 14:29:11 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 618b1ef1bc467c98376d75b330ec744db9572c70
https://github.com/WebKit/WebKit/commit/618b1ef1bc467c98376d75b330ec744db9572c70
Author: Richard Robinson <richard_robinson2 at apple.com>
Date: 2025-02-28 (Fri, 28 Feb 2025)
Changed paths:
M Source/WebCore/page/LocalFrameView.cpp
M Source/WebCore/page/LocalFrameView.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
A Source/WebKit/UIProcess/API/Cocoa/_WKRectEdge+Extras.swift
M Source/WebKit/UIProcess/API/Swift/WebPage.swift
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Source/WebKit/_WebKit_SwiftUI/CocoaWebViewAdapter.swift
M Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift
M Source/WebKit/_WebKit_SwiftUI/SwiftUI+Extras.swift
M Source/WebKit/_WebKit_SwiftUI/View+WebViewModifiers.swift
M Source/WebKit/_WebKit_SwiftUI/ViewModifierContexts.swift
M Source/WebKit/_WebKit_SwiftUI/WebViewRepresentable.swift
Log Message:
-----------
[SwiftUI] Provide ability for clients to scroll a WebView using a ScrollPosition
https://bugs.webkit.org/show_bug.cgi?id=288813
rdar://145824125
Reviewed by Aditya Keerthi.
The existing `ScrollPosition` SwiftUI type in conjunction with the `.scrollPosition` view modifier allow clients to programatically
scroll in the following ways:
1. To a particular point
2. To a particular x or y value
3. To a particular edge
4. To a particular identifiable view
This implements support for (1) and (3) by adding a `.webViewScrollPosition` view modifier. (2) is not currently possible because
the SwiftUI API does not expose these properties. (4) is potentially possible, but out of scope for this PR.
To facilitate this, new functionality is internally added to WebKit to allow scrolling to a particular edge.
* Source/WebCore/page/LocalFrameView.cpp:
(WebCore::LocalFrameView::scrollToEdgeWithOptions):
* Source/WebCore/page/LocalFrameView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKRectEdge+Extras.swift: Copied from Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift.
(_WKRectEdge.result):
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(WebPageWebView.setContentOffset(_:animated:)):
(WebPageWebView.scrollTo(_:animated:)):
* Source/WebKit/UIProcess/API/mac/WKWebViewMac.mm:
(-[WKWebView _scrollToEdge:animated:]):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::scrollToEdge):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::scrollToEdge):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scrollToEdge):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/_WebKit_SwiftUI/CocoaWebViewAdapter.swift:
(CocoaWebViewAdapter.scrollPosition):
* Source/WebKit/_WebKit_SwiftUI/Foundation+Extras.swift:
* Source/WebKit/_WebKit_SwiftUI/SwiftUI+Extras.swift:
(Transaction.isAnimated):
* Source/WebKit/_WebKit_SwiftUI/View+WebViewModifiers.swift:
(View.webViewScrollPosition(_:)):
* Source/WebKit/_WebKit_SwiftUI/ViewModifierContexts.swift:
(ScrollPositionContext.position):
* Source/WebKit/_WebKit_SwiftUI/WebViewRepresentable.swift:
(WebViewRepresentable.updatePlatformView(_:context:)):
(WebViewCoordinator.update(_:configuration:context:)):
(WebViewCoordinator.updateScrollPosition(_:context:)):
(WebViewCoordinator.updateFindInteraction(_:context:)):
(WebViewCoordinator.update(_:configuration:environment:)): Deleted.
(WebViewCoordinator.updateFindInteraction(_:environment:)): Deleted.
Canonical link: https://commits.webkit.org/291379@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list