Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 618b1ef1bc467c98376d75b330ec744db9572c70
https://github.com/WebKit/WebKit/commit/618b1ef1bc467c98376d75b330ec744db9572c70
Author: Richard Robinson <[email protected]>
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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes