[webkit-changes] [WebKit/WebKit] 952dea: [iOS] Selection UI should be clipped in overflow s...
Wenson Hsieh
noreply at github.com
Fri Sep 27 12:55:57 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 952deaf8f19d5f78cafe8218cdb965bf88a912f8
https://github.com/WebKit/WebKit/commit/952deaf8f19d5f78cafe8218cdb965bf88a912f8
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2024-09-27 (Fri, 27 Sep 2024)
Changed paths:
A LayoutTests/editing/selection/ios/selection-clip-rect-in-overflow-scroller-expected.txt
A LayoutTests/editing/selection/ios/selection-clip-rect-in-overflow-scroller.html
M LayoutTests/editing/selection/ios/selection-handle-clamping-in-iframe.html
M Source/WebCore/dom/Position.h
M Source/WebCore/rendering/RenderObject.h
M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
M Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm
Log Message:
-----------
[iOS] Selection UI should be clipped in overflow scrolling containers
https://bugs.webkit.org/show_bug.cgi?id=280440
rdar://9906345
Reviewed by Aditya Keerthi.
Currently, we plumb `selectionClipRect` to the UI process only in the case where the selection is
inside of an editable root or form control. This means we fail to clip UIKit's native selection UI
in cases where the selection is non-editable, but inside of a subscrollable region. To fix this, we
compute and send the `selectionClipRect` over to the UI process through `EditorState`'s visual data
struct in the case where the selection is both:
1. User-visible (i.e. not a collapsed selection caret in non-editable content)
2. Inside of a scrollable area.
See below for more details.
* LayoutTests/editing/selection/ios/selection-clip-rect-in-overflow-scroller-expected.txt: Added.
* LayoutTests/editing/selection/ios/selection-clip-rect-in-overflow-scroller.html: Added.
Add a layout test to verify that the selection highlight disappears when scrolling the selection
range outside of an overflow sroller's clip rect.
* LayoutTests/editing/selection/ios/selection-handle-clamping-in-iframe.html:
Adjust an existing test to work around an existing issue where the selection briefly collapses to
the first visible character in the subframe when moving selection handles upwards. Using the event
stream builder to synthesize the pan gesture sends higher resolution events that better simulates
real user interaction.
* Source/WebCore/dom/Position.h:
* Source/WebCore/rendering/RenderObject.h:
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::getPlatformEditorStateCommon const):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::enclosingScroller):
Walk up the render tree in search of an enclosing renderer that `canBeScrolledAndHasScrollableArea`,
starting from the selection's common ancestor node.
(WebKit::WebPage::computeSelectionClipRect const):
* Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(isZoomingOrScrolling):
(-[TestRunnerWKWebView isZoomingOrScrolling]):
Adjust this test harness method to also return `YES` in the case where any child scroller underneath
the web view is being scrolled.
Canonical link: https://commits.webkit.org/284387@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