Summary: | Clipped element does not have a reflection if backdrop-filter is applied | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Antoine Quint <graouts> | ||||
Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> | ||||
Status: | NEW --- | ||||||
Severity: | Normal | CC: | graouts, simon.fraser, webkit-bug-importer | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | WebKit Nightly Build | ||||||
Hardware: | All | ||||||
OS: | All | ||||||
Attachments: |
|
I have it working but for some reason the background color is missing in the reflection until I resize a window, which I assume is because that causes a layout. This is a lot trickier than I thought at first. To get this to work, we need to do this: - in PlatformCALayerCocoa::clone(), also call setShapePath() when we're dealing with a LayerTypeShapeLayer - in GraphicsLayerCA::fetchCloneLayers(), clone the mask layer in case we have both a backdrop and a mask and set the cloned mask to the cloned backdrop But this doesn't fully fix the issue, because the way we clone the mask in GraphicsLayerCA::updateLayerMask() isn't quite correct. Ideally, we would clone the mask's PlatformCALayer independently in GraphicsLayerCA::updateLayerMask() and GraphicsLayerCA::fetchCloneLayers(), but this is made difficult due to the mask layer being touched from RenderLayerBacking and due to not having a way to get to the backdrop clone from GraphicsLayerCA since this is all internal to PlatformCALayer. |
Created attachment 280097 [details] Testcase If an element that has a backdrop-filter as well as a clip-path applied to it has a reflection, the reflection does not appear.