Changeset 270849 in webkit


Ignore:
Timestamp:
Dec 15, 2020 10:00:55 AM (19 months ago)
Author:
Devin Rousso
Message:

Toggling pointer-events on body does not re-enable scrolling on child
https://bugs.webkit.org/show_bug.cgi?id=218533
<rdar://problem/71009746>

Reviewed by Simon Fraser.

Source/WebCore:

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresRecompositeLayer const):
Changes to the CSS pointer-events property should also also indicate that a recomposite is
required (StyleDifference::RecompositeLayer), resulting in RenderElement::styleWillChange
being called, which invalidates the event region since the value of the CSS pointer-events
property has changed.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerStyleChanged):
Don't limit StyleDifference::RecompositeLayer changes to only affect RenderWidget.

LayoutTests:

  • fast/scrolling/ios/overflow-scroll-pointer-events.html: Added.
  • fast/scrolling/ios/overflow-scroll-pointer-events-expected.txt: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r270848 r270849  
     12020-12-15  Devin Rousso  <drousso@apple.com>
     2
     3        Toggling pointer-events on body does not re-enable scrolling on child
     4        https://bugs.webkit.org/show_bug.cgi?id=218533
     5        <rdar://problem/71009746>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * fast/scrolling/ios/overflow-scroll-pointer-events.html: Added.
     10        * fast/scrolling/ios/overflow-scroll-pointer-events-expected.txt: Added.
     11
    1122020-12-15  Zalan Bujtas  <zalan@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r270848 r270849  
     12020-12-15  Devin Rousso  <drousso@apple.com>
     2
     3        Toggling pointer-events on body does not re-enable scrolling on child
     4        https://bugs.webkit.org/show_bug.cgi?id=218533
     5        <rdar://problem/71009746>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * rendering/style/RenderStyle.cpp:
     10        (WebCore::RenderStyle::changeRequiresRecompositeLayer const):
     11        Changes to the CSS `pointer-events` property should also also indicate that a recomposite is
     12        required (`StyleDifference::RecompositeLayer`), resulting in `RenderElement::styleWillChange`
     13        being called, which invalidates the event region since the value of the CSS `pointer-events`
     14        property has changed.
     15
     16        * rendering/RenderLayerCompositor.cpp:
     17        (WebCore::RenderLayerCompositor::layerStyleChanged):
     18        Don't limit `StyleDifference::RecompositeLayer` changes to only affect `RenderWidget`.
     19
    1202020-12-15  Zalan Bujtas  <zalan@apple.com>
    221
  • trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp

    r270363 r270849  
    16821682    }
    16831683
    1684     // This is necessary to get iframe layers hooked up in response to scheduleInvalidateStyleAndLayerComposition().
    1685     if (diff == StyleDifference::RecompositeLayer && layer.isComposited() && is<RenderWidget>(layer.renderer()))
    1686         layer.setNeedsCompositingConfigurationUpdate();
     1684    if (diff == StyleDifference::RecompositeLayer && layer.isComposited()) {
     1685        if (oldStyle && oldStyle->pointerEvents() != newStyle.pointerEvents())
     1686            layer.setNeedsCompositingConfigurationUpdate();
     1687        else if (is<RenderWidget>(layer.renderer())) {
     1688            // This is necessary to get iframe layers hooked up in response to scheduleInvalidateStyleAndLayerComposition().
     1689            layer.setNeedsCompositingConfigurationUpdate();
     1690        }
     1691    }
    16871692
    16881693    if (diff >= StyleDifference::RecompositeLayer && oldStyle && recompositeChangeRequiresGeometryUpdate(*oldStyle, newStyle)) {
  • trunk/Source/WebCore/rendering/style/RenderStyle.cpp

    r270363 r270849  
    11681168bool RenderStyle::changeRequiresRecompositeLayer(const RenderStyle& other, OptionSet<StyleDifferenceContextSensitiveProperty>&) const
    11691169{
     1170    if (m_inheritedFlags.pointerEvents != other.m_inheritedFlags.pointerEvents)
     1171        return true;
     1172
    11701173    if (m_rareNonInheritedData.ptr() != other.m_rareNonInheritedData.ptr()) {
    11711174        if (m_rareNonInheritedData->transformStyle3D != other.m_rareNonInheritedData->transformStyle3D
Note: See TracChangeset for help on using the changeset viewer.