intersectsWithAncestor uses overlapBounds(), which doesn't take into account the boxes of other fragments, and can incorrectly determine that we don't intersect if only the first fragment intersects. <rdar://90589355>
Created attachment 456311 [details] Patch
Comment on attachment 456311 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456311&action=review > Source/WebCore/rendering/RenderLayerBacking.cpp:2813 > - auto overlap = child.overlapBounds(); > - overlap.moveBy(offset); > + auto overlap = child.boundingBox(&ancestor, child.offsetFromAncestor(&ancestor), RenderLayer::UseFragmentBoxesExcludingCompositing); Is child.overlapBounds() just wrong in this case? That implies there are other cases where overlap is broken?
Comment on attachment 456311 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=456311&action=review >> Source/WebCore/rendering/RenderLayerBacking.cpp:2813 >> + auto overlap = child.boundingBox(&ancestor, child.offsetFromAncestor(&ancestor), RenderLayer::UseFragmentBoxesExcludingCompositing); > > Is child.overlapBounds() just wrong in this case? That implies there are other cases where overlap is broken? It looks like the only other caller overlapBounds is within RenderLayerCompositor, and RenderLayerCompositor::canBeComposited returns false for RenderFragmentedFlow, so I think it shouldn't ever be called for this case.
Committed r292350 (249215@main): <https://commits.webkit.org/249215@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 456311 [details].