[webkit-changes] [WebKit/WebKit] cc12d0: Second div within a rotated and overflow:hidden pa...

mattwoodrow noreply at github.com
Mon Dec 11 12:14:30 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389
      https://github.com/WebKit/WebKit/commit/cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-12-11 (Mon, 11 Dec 2023)

  Changed paths:
    A LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html
    A LayoutTests/compositing/layer-creation/overlap-transformed-clip.html
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayer.h
    M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  -----------
  Second div within a rotated and overflow:hidden parent div does not render.
https://bugs.webkit.org/show_bug.cgi?id=265480
<rdar://118901069>

Reviewed by Simon Fraser.

RenderLayerCompositor::addToOverlapMap takes layer overlap bounds in the root coordinate space, computes
the clip in the root coordinate space and intersect them.

RenderLayer::calculateClipRects was only ever applying an offset when converting clips to an ancestor coordinate
space, which is incorrect if there is a non-tranlation transform (like the rotation in the testcase).

The incorrect clip resulted in an empty overlap area, and us drawing the green div into the backing store behind
the composited (3d transformed) div.

This makes calculateClipRects transform the clip quad, not just the top-left point.

* LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html: Added.
* LayoutTests/compositing/layer-creation/overlap-transformed-clip.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* Source/WebCore/rendering/RenderLayer.h:
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::intersectsWithAncestor):

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




More information about the webkit-changes mailing list