RESOLVED FIXED 239055
REGRESSION (r289785): [iOS] Unable to double-click to select a word in a received email
https://bugs.webkit.org/show_bug.cgi?id=239055
Summary REGRESSION (r289785): [iOS] Unable to double-click to select a word in a rece...
Wenson Hsieh
Reported 2022-04-10 14:59:04 PDT
Attachments
For EWS (3.94 KB, patch)
2022-04-10 15:35 PDT, Wenson Hsieh
no flags
For landing (5.21 KB, patch)
2022-04-11 09:40 PDT, Wenson Hsieh
ews-feeder: commit-queue-
Wenson Hsieh
Comment 1 2022-04-10 15:35:16 PDT
Tim Horton
Comment 2 2022-04-10 18:37:42 PDT
Comment on attachment 457213 [details] For EWS View in context: https://bugs.webkit.org/attachment.cgi?id=457213&action=review > Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:-1857 > - if (gestureRecognizer != _mouseGestureRecognizer && [_mouseGestureRecognizer mouseTouch] == touch && touch.type == UITouchTypeIndirectPointer) I think this isn't the only use of `UITouchTypeIndirectPointer` in our code? Are the others wrong too?
Wenson Hsieh
Comment 3 2022-04-11 07:40:15 PDT
Comment on attachment 457213 [details] For EWS View in context: https://bugs.webkit.org/attachment.cgi?id=457213&action=review Thanks for the review! >> Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:-1857 >> - if (gestureRecognizer != _mouseGestureRecognizer && [_mouseGestureRecognizer mouseTouch] == touch && touch.type == UITouchTypeIndirectPointer) > > I think this isn't the only use of `UITouchTypeIndirectPointer` in our code? Are the others wrong too? That's a good point — the two other checks in `-_shouldReceiveTouch:forEvent:recognizerView:` and in this same function (below) also look a bit suspicious. I'll double check to see if they should be changed as well....
Wenson Hsieh
Comment 4 2022-04-11 09:35:19 PDT
(In reply to Wenson Hsieh from comment #3) > Comment on attachment 457213 [details] > For EWS > > View in context: > https://bugs.webkit.org/attachment.cgi?id=457213&action=review > > Thanks for the review! > > >> Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:-1857 > >> - if (gestureRecognizer != _mouseGestureRecognizer && [_mouseGestureRecognizer mouseTouch] == touch && touch.type == UITouchTypeIndirectPointer) > > > > I think this isn't the only use of `UITouchTypeIndirectPointer` in our code? Are the others wrong too? > > That's a good point — the two other checks in > `-_shouldReceiveTouch:forEvent:recognizerView:` and in this same function > (below) also look a bit suspicious. > > I'll double check to see if they should be changed as well.... So for this check: ``` if (gestureRecognizer == _doubleTapGestureRecognizer || gestureRecognizer == _nonBlockingDoubleTapGestureRecognizer) return touch.type != UITouchTypeIndirectPointer; ``` I'm actually not sure how to exercise that codepath using touches produced by a trackpad on iOS, since we would normally already have bailed in the `gestureRecognizer != _mouseGestureRecognizer && [_mouseGestureRecognizer mouseTouch] == touch` check above. It's also interesting to note that this was changed in trac.webkit.org/r261978 as well, from `-_isPointerTouch` to `UITouchTypeIndirectPointer`, though maybe that was just about moving off of UIKit SPI (rather than about changing behavior). For the other check: ``` - (BOOL)_shouldReceiveTouch:(UITouch *)touch forEvent:(UIEvent *)event recognizerView:(id)gestureOwner { return touch == _currentTouch && touch.type == UITouchTypeIndirectPointer; } ``` I confirmed that this causes `mousedown` and `mouseup` events to *not* be dispatched in non-"UIApplicationSupportsIndirectInputEvents" apps when clicking with a trackpad! This is fixed if we use `-_isPointerTouch` instead. Since this also appears to be a recent regression (from r290009), I'll fix it in this patch as well.
Wenson Hsieh
Comment 5 2022-04-11 09:40:25 PDT
Created attachment 457259 [details] For landing
EWS
Comment 6 2022-04-11 13:19:58 PDT
Committed r292715 (249505@main): <https://commits.webkit.org/249505@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 457259 [details].
Note You need to log in before you can comment on or make changes to this bug.