Changeset 246316 in webkit


Ignore:
Timestamp:
Jun 11, 2019 8:55:17 AM (5 years ago)
Author:
Antti Koivisto
Message:

REGRESSION (iOS): Can't scroll litter-robot.com checkout form's dropdown menus
https://bugs.webkit.org/show_bug.cgi?id=198753
<rdar://problem/51355686>

Reviewed by Simon Fraser.

Source/WebKit:

If an element with 'overflow:scroll' also had 'visibility:hidden' or 'pointer-events:none' it would
capture touches and prevent scrolling of any overlapped scrollers.

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::collectDescendantViewsAtPoint):

Filter out views with 'isUserInteractionEnabled == NO' (set for hidden and pointer-events:none layers).
This prevents it being considered as the first view hit when determining scrolling relationships.

(-[UIView _web_findDescendantViewAtPoint:withEvent:]):

No need to skip here anymore.

LayoutTests:

  • fast/scrolling/ios/overflow-scroll-user-interaction-disabled-expected.txt: Added.
  • fast/scrolling/ios/overflow-scroll-user-interaction-disabled.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r246312 r246316  
     12019-06-11  Antti Koivisto  <antti@apple.com>
     2
     3        REGRESSION (iOS): Can't scroll litter-robot.com checkout form's dropdown menus
     4        https://bugs.webkit.org/show_bug.cgi?id=198753
     5        <rdar://problem/51355686>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * fast/scrolling/ios/overflow-scroll-user-interaction-disabled-expected.txt: Added.
     10        * fast/scrolling/ios/overflow-scroll-user-interaction-disabled.html: Added.
     11
    1122019-06-11  Youenn Fablet  <youenn@apple.com>
    213
  • trunk/Source/WebKit/ChangeLog

    r246311 r246316  
     12019-06-11  Antti Koivisto  <antti@apple.com>
     2
     3        REGRESSION (iOS): Can't scroll litter-robot.com checkout form's dropdown menus
     4        https://bugs.webkit.org/show_bug.cgi?id=198753
     5        <rdar://problem/51355686>
     6
     7        Reviewed by Simon Fraser.
     8
     9        If an element with 'overflow:scroll' also had 'visibility:hidden' or 'pointer-events:none' it would
     10        capture touches and prevent scrolling of any overlapped scrollers.
     11
     12        * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
     13        (WebKit::collectDescendantViewsAtPoint):
     14
     15        Filter out views with 'isUserInteractionEnabled == NO' (set for hidden and pointer-events:none layers).
     16        This prevents it being considered as the first view hit when determining scrolling relationships.
     17
     18        (-[UIView _web_findDescendantViewAtPoint:withEvent:]):
     19
     20        No need to skip here anymore.
     21
    1222019-06-11  Wenson Hsieh  <wenson_hsieh@apple.com>
    223
  • trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm

    r245830 r246316  
    4848
    4949        auto handlesEvent = [&] {
     50            // FIXME: isUserInteractionEnabled is mostly redundant with event regions for web content layers.
     51            //        It is currently only needed for scroll views.
     52            if (!view.isUserInteractionEnabled)
     53                return false;
    5054            if (![view pointInside:subviewPoint withEvent:event])
    5155                return false;
     
    134138
    135139    for (auto *view : WTF::makeReversedRange(viewsAtPoint)) {
    136         if (!view.isUserInteractionEnabled)
    137             continue;
    138 
    139140        if ([view conformsToProtocol:@protocol(WKNativelyInteractible)]) {
    140141            CGPoint subviewPoint = [view convertPoint:point fromView:self];
Note: See TracChangeset for help on using the changeset viewer.