Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a5ba024da4f42c80c7e5bdc79dff6e39abd97ab5
      
https://github.com/WebKit/WebKit/commit/a5ba024da4f42c80c7e5bdc79dff6e39abd97ab5
  Author: Alan Baradlay <[email protected]>
  Date:   2023-05-15 (Mon, 15 May 2023)

  Changed paths:
    A LayoutTests/fast/block/overflow-clip-with-instrusive-float-expected.html
    A LayoutTests/fast/block/overflow-clip-with-instrusive-float.html
    M Source/WebCore/rendering/FloatingObjects.cpp
    M Source/WebCore/rendering/FloatingObjects.h
    M Source/WebCore/rendering/RenderBlockFlow.cpp

  Log Message:
  -----------
  overflow:clip fails when intrusive float is present
https://bugs.webkit.org/show_bug.cgi?id=256410
<rdar://problem/109293228>

Reviewed by Simon Fraser.

Intrusive (overhanging) float painting is propagated to the outermost block 
where the float stops being intrusive.
e.g.
<div outer>
  <div containing_block>
    <div tall_float></div>
  </div>
</div>

"tall_float" gets painted by "outer" (see RenderBlockFlow::paintFloats).

The "painting flag" gets propagated in RenderBlockFlow::addOverhangingFloats as 
we create copies of the original FloatingObject
for each block where the float overhangs (and only one (the outermost) of these 
copies has the flag "shouldPaint" turned on).

In this patch we stop propagating this "shouldPaint" flag when we see a 
ancestor block with overflow clip.

* LayoutTests/fast/block/overflow-clip-with-instrusive-float-expected.html: 
Added.
* LayoutTests/fast/block/overflow-clip-with-instrusive-float.html: Added.
* Source/WebCore/rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::addOverhangingFloats):

Canonical link: https://commits.webkit.org/264101@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to