Changeset 267067 in webkit
- Timestamp:
- Sep 14, 2020, 7:17:25 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 5 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt (modified) (1 diff)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt (added)
-
LayoutTests/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html (added)
-
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt (modified) (1 diff)
-
LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderLayer.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r267066 r267067 1 2020-09-14 Simon Fraser <simon.fraser@apple.com> 2 3 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 4 https://bugs.webkit.org/show_bug.cgi?id=216490 5 <rdar://problem/67018073> 6 7 Reviewed by Zalan Bujtas. 8 9 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment-expected.txt: Added. 10 * compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html: Added. 11 1 12 2020-09-14 Chris Dumez <cdumez@apple.com> 2 13 -
trunk/LayoutTests/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt
r266825 r267067 88 88 (GraphicsLayer 89 89 (position 23.00 23.00) 90 (bounds origin 0.00 150.00) 90 91 (bounds 195.00 210.00) 91 92 (clips 1) -
trunk/LayoutTests/platform/ios-wk2/compositing/scrolling/async-overflow-scrolling/clipped-layer-in-overflow-nested-expected.txt
r246725 r267067 77 77 (GraphicsLayer 78 78 (position 23.00 23.00) 79 (bounds origin 0.00 150.00) 79 80 (bounds 210.00 210.00) 80 81 (clips 1) -
trunk/Source/WebCore/ChangeLog
r267066 r267067 1 2020-09-14 Simon Fraser <simon.fraser@apple.com> 2 3 REGRESSION (Async overflow scroll): Code snippets on getkirby.com appear and disappear as content is scrolled 4 https://bugs.webkit.org/show_bug.cgi?id=216490 5 <rdar://problem/67018073> 6 7 Reviewed by Zalan Bujtas. 8 9 The content in question had a z-order layer tree like this: 10 11 A (0,0) width=997 height=829 (layerID 20) {sc 2} RenderView 12 + B (0,0) width=997 height=8 RenderBlock HTML class='no-js' 13 + C (0,0) width=997 height=829 RenderFlexibleBox MAIN 14 n D (0,0) width=256 height=829 RenderFlexibleBox NAV class='left panel' 15 n E (0,0) width=256 height=829 (layerID 25) {sc 3} RenderBlock DIV class='scroller' 16 n F (256,0) width=741 height=829 RenderFlexibleBox ARTICLE class='main panel' 17 n G (0,0) width=741 height=829 (layerID 26) {sc 4} RenderBlock DIV class='scroller' 18 n H (0,-816) width=741 height=2810 RenderBlock DIV class='article-content' 19 + I (0,0) width=256 height=1000 (layerID 27) overlap RenderBlock (relative positioned) DIV class='content' 20 + J (10,300) width=721 height=202 (layerID 28) overlap RenderBlock (relative positioned) DIV class='relative-box' 21 + K (10,802) width=721 height=202 (layerID 29) overlap RenderBlock (relative positioned) DIV class='relative-box' 22 + L (10,1304) width=721 height=202 (layerID 30) overlap RenderBlock (relative positioned) DIV class='relative-box' 23 + M (10,1806) width=721 height=202 (layerID 31) overlap RenderBlock (relative positioned) DIV class='relative-box' 24 + M (10,2308) width=721 height=202 (layerID 32) overlap RenderBlock (relative positioned) DIV class='relative-box' 25 26 When layer 'G' is scrolled, the code would find the paint-order parent, F, which is normal-flow because it has overflow:hidden, 27 and would call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. However, that doesn't go high enough, because 28 we need to update J-M since their ancestor clipping stacks have geometry that relies on the scroll position of G. If we don't 29 update that geometry, GraphicsLayers have an incorrect notion of what's visible, and we don't attach backing store. 30 31 The fix is to climb up to the stacking context B and call setDescendantsNeedUpdateBackingAndHierarchyTraversal() on it. 32 33 Test: compositing/scrolling/async-overflow-scrolling/nested-scrollers-backing-attachment.html 34 35 * rendering/RenderLayer.cpp: 36 (WebCore::RenderLayer::scrollTo): 37 1 38 2020-09-14 Chris Dumez <cdumez@apple.com> 2 39 -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r267002 r267067 2730 2730 2731 2731 // Scroll position can affect the location of a composited descendant (which may be a sibling in z-order), 2732 // so trigger a descendant walk from the paint-order parent.2733 if (auto* paintParent = paintOrderParent())2732 // so trigger a descendant walk from the stacking context. 2733 if (auto* paintParent = stackingContext()) 2734 2734 paintParent->setDescendantsNeedUpdateBackingAndHierarchyTraversal(); 2735 2735 }
Note:
See TracChangeset
for help on using the changeset viewer.