Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0f118a09c40eacfb6d7ca0e8370486b10b3c6cce
      
https://github.com/WebKit/WebKit/commit/0f118a09c40eacfb6d7ca0e8370486b10b3c6cce
  Author: Wenson Hsieh <[email protected]>
  Date:   2023-05-09 (Tue, 09 May 2023)

  Changed paths:
    A 
LayoutTests/editing/selection/ios/no-click-event-when-adjusting-selection-handles-expected.txt
    A 
LayoutTests/editing/selection/ios/no-click-event-when-adjusting-selection-handles.html
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm

  Log Message:
  -----------
  REGRESSION (262853@main): Text selection sometimes disappears after 
interacting with selection handles
https://bugs.webkit.org/show_bug.cgi?id=256542
rdar://108200433

Reviewed by Aditya Keerthi.

This is more fallout from the changes in 262853@main, which made pan gestures 
recognize alongside
the synthetic tap gesture; after that commit, the pan gesture for adjusting 
selection handles —
`UITextRangeAdjustmentGestureRecognizer` — no longer prevents the synthetic tap 
gesture from firing
when adjusting selection handles by panning over very short distances (i.e., 
under the 45pt maximum
allowable movement threshold for recognizing tap gestures).

When performing a pan gesture in this manner on a selection handle over any 
element with a click
event listener, this causes the selection to collapse as the synthetic click is 
sent to the page and
sets the selection to a caret at the tap location.

The original intent behind the changes in 262853@main was to allow tap gestures 
to recognize
alongside scroll view pan gestures only, so this is merely a result of that 
logic being overly
aggressive. Instead of allowing simultaneous recognition with all pan gestures, 
we fix this by
limiting it to system scroll view pan gestures only.

Test: editing/selection/ios/no-click-event-when-adjusting-selection-handles.html

* 
LayoutTests/editing/selection/ios/no-click-event-when-adjusting-selection-handles-expected.txt:
 Added.
* 
LayoutTests/editing/selection/ios/no-click-event-when-adjusting-selection-handles.html:
 Added.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(isBuiltInScrollViewPanGestureRecognizer):
(isBuiltInScrollViewGestureRecognizer):

Pull functionality to check whether or not a given gesture recognizer is a 
built-in scroll view pan
gesture out into a separate helper method; also, optimize this code slightly by 
caching the result
of the dynamic `NSString` -> `Class` lookup in static variables.

(-[WKContentView 
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):

Replace the "is pan gesture" check with a more targeted "is built-in scroll 
view pan gesture" check.
See above for more details.

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to