[webkit-changes] [WebKit/WebKit] c728b8: [SwiftUI] Find-in-Page integration (macOS)
Richard Robinson
noreply at github.com
Fri Jan 3 13:57:54 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c728b84463466fdcbc5215809c205d8fed589862
https://github.com/WebKit/WebKit/commit/c728b84463466fdcbc5215809c205d8fed589862
Author: Richard Robinson <richard_robinson2 at apple.com>
Date: 2025-01-03 (Fri, 03 Jan 2025)
Changed paths:
M Source/WebKit/UIProcess/API/Swift/View+WebViewModifiers.swift
M Source/WebKit/UIProcess/API/Swift/WebPage.swift
R Source/WebKit/UIProcess/API/Swift/WebView.swift
A Source/WebKit/UIProcess/API/Swift/WebView/CocoaWebViewAdapter.swift
A Source/WebKit/UIProcess/API/Swift/WebView/PlatformTextSearching.swift
A Source/WebKit/UIProcess/API/Swift/WebView/WebView.swift
A Source/WebKit/UIProcess/API/Swift/WebView/WebViewRepresentable.swift
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Tools/SwiftBrowser/Source/SwiftBrowser.swift
M Tools/SwiftBrowser/Source/Views/ContentView.swift
Log Message:
-----------
[SwiftUI] Find-in-Page integration (macOS)
https://bugs.webkit.org/show_bug.cgi?id=285290
rdar://141503355
Reviewed by Wenson Hsieh.
Use NSTextFinder with the backing WKWebView to integrate find-in-page capabilities in SwiftUI.
* Use autolayout instead of manual frame adjustment for `CocoaWebViewAdapter` so that the subviews can
easily adjust based on the presence or lack of find bar.
* Refactor CocoaWebViewAdapter a bit to be as platform agnostic as possible by introducing two helper protocols.
* Re-arrange and rename some files and types for better organization.
* Source/WebKit/UIProcess/API/Swift/View+WebViewModifiers.swift:
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(backingWebView):
* Source/WebKit/UIProcess/API/Swift/WebView/CocoaWebViewAdapter.swift: Added.
(CocoaWebViewAdapter.isFindNavigatorVisible):
(CocoaWebViewAdapter.findInteraction):
(CocoaWebViewAdapter.isFindBarVisible):
(CocoaWebViewAdapter.findBarView):
(CocoaWebViewAdapter.findContext):
(CocoaWebViewAdapter.performFindPanelAction(_:)):
(CocoaWebViewAdapter.findBarDidBecomeVisible):
(CocoaWebViewAdapter.findBarDidBecomeHidden):
(CocoaWebViewAdapter.webViewConstraints):
(CocoaWebViewAdapter.findBarConstraints):
(CocoaWebViewAdapter.webViewHeightConstraint):
(CocoaWebViewAdapter.removeConstraints):
(CocoaWebViewAdapter.activateConstraints):
(CocoaWebViewAdapter.webView):
(CocoaWebViewAdapter.contentView):
(CocoaWebViewAdapter.findBarViewDidChangeHeight):
(CocoaWebViewAdapter.findInteraction(_:didBegin:)):
(CocoaWebViewAdapter.findInteraction(_:didEnd:)):
(CocoaWebViewAdapter.supportsTextReplacement):
* Source/WebKit/UIProcess/API/Swift/WebView/PlatformTextSearching.swift: Copied from Tools/SwiftBrowser/Source/SwiftBrowser.swift.
(PlatformTextSearching.isFindNavigatorVisible):
(PlatformTextSearching.findInteraction):
(PlatformFindInteraction.presentFindNavigator(_:)):
(PlatformFindInteraction.dismissFindNavigator):
(NSTextFinderAdapter.presentFindNavigator(_:)):
(NSTextFinderAdapter.dismissFindNavigator):
(UIFindInteractionAdapter.presentFindNavigator(_:)):
(UIFindInteractionAdapter.dismissFindNavigator):
* Source/WebKit/UIProcess/API/Swift/WebView/WebView.swift: Copied from Tools/SwiftBrowser/Source/SwiftBrowser.swift.
(WebView_v0.body):
* Source/WebKit/UIProcess/API/Swift/WebView/WebViewRepresentable.swift: Renamed from Source/WebKit/UIProcess/API/Swift/WebView.swift.
(WebViewRepresentable.makePlatformView(_:)):
(WebViewRepresentable.updatePlatformView(_:context:)):
(WebViewCoordinator.update(_:configuration:environment:)):
(WebViewCoordinator.updateFindInteraction(_:environment:)):
(WebViewRepresentable.makeUIView(_:)):
(WebViewRepresentable.updateUIView(_:context:)):
(WebViewRepresentable.makeNSView(_:)):
(WebViewRepresentable.updateNSView(_:context:)):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/SwiftBrowser/Source/SwiftBrowser.swift:
(SwiftBrowserApp.body):
Canonical link: https://commits.webkit.org/288418@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