Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e34f69a66691276689fdaccbe67c44a0a91be982
https://github.com/WebKit/WebKit/commit/e34f69a66691276689fdaccbe67c44a0a91be982
Author: Nikolas Zimmermann <[email protected]>
Date: 2026-06-22 (Mon, 22 Jun 2026)
Changed paths:
A
LayoutTests/svg/transforms/transform-preserved-after-opacity-layer-removal-expected.html
A
LayoutTests/svg/transforms/transform-preserved-after-opacity-layer-removal.html
M Source/WebCore/rendering/RenderLayerModelObject.cpp
Log Message:
-----------
[LBSE] Preserve 2D transform flags when an SVG renderer loses its layer
https://bugs.webkit.org/show_bug.cgi?id=317574
Reviewed by Rob Buis.
RenderLayerModelObject::styleDidChange() unconditionally cleared
hasTransformRelatedProperty()/hasSVGTransform() in the layer-removal
branch, on the assumption that any transform-related property forces a
layer. That holds for CSS renderers but not under LBSE with conditional
layer creation activated, where a plain 2D SVG transform needs no layer.
So an SVG leaf that had a layer only for a grouping effect (for example
opacity) and then loses that effect would have its transform flags wiped
and never restored, leaving isTransformed() false and the element
painting untransformed...
updateFromStyle() (run at the top of styleDidChange) already sets the
correct flags for every SVG layer-aware renderer, so skip the clearing
for them and let those values stand as they are.
Test: svg/transforms/transform-preserved-after-opacity-layer-removal.html
*
LayoutTests/svg/transforms/transform-preserved-after-opacity-layer-removal-expected.html:
Added.
*
LayoutTests/svg/transforms/transform-preserved-after-opacity-layer-removal.html:
Added.
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::styleDidChange):
Canonical link: https://commits.webkit.org/315597@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications