Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 677d4d7c6bf8abd9367fbd7b46f349226f4a90e9
      
https://github.com/WebKit/WebKit/commit/677d4d7c6bf8abd9367fbd7b46f349226f4a90e9
  Author: Nikolas Zimmermann <[email protected]>
  Date:   2026-10-02 (Fri, 02 Oct 2026)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest.html
    A 
LayoutTests/platform/mac-tahoe-wk2-lbse-text/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest-expected.txt
    A 
LayoutTests/svg/repaint/non-scaling-stroke-ancestor-transform-repaint-rects-expected.txt
    A 
LayoutTests/svg/repaint/non-scaling-stroke-ancestor-transform-repaint-rects.html
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerModelObject.cpp
    M Source/WebCore/rendering/RenderLayerModelObject.h
    M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
    M Source/WebCore/rendering/svg/RenderSVGShape.cpp
    M Source/WebCore/rendering/svg/RenderSVGShape.h

  Log Message:
  -----------
  [LBSE] A non-scaling stroke keeps its old width after a transform change
https://bugs.webkit.org/show_bug.cgi?id=325849

Reviewed by Rob Buis.

A non-scaling stroke depends on every transform between the shape and the
outermost <svg> element. When one of them changed, the cached stroke bounding
box of the shape was not invalidated, so hit testing and repainting kept using
the old stroke width until the shape was laid out again.

Invalidate the cached stroke bounding boxes wherever a transform is written,
both for the shape itself and for all non-scaling strokes below it. To keep
this cheap, a new RenderElement bit marks the subtrees that contain a
non-scaling stroke.

Tests: 
imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest.html
       svg/repaint/non-scaling-stroke-ancestor-transform-repaint-rects.html

* 
LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest.html:
 Added.
* 
LayoutTests/platform/mac-tahoe-wk2-lbse-text/imported/w3c/web-platform-tests/svg/interact/scripted/non-scaling-stroke-transform-change-hittest-expected.txt:
 Added.
* 
LayoutTests/svg/repaint/non-scaling-stroke-ancestor-transform-repaint-rects-expected.txt:
 Added.
* 
LayoutTests/svg/repaint/non-scaling-stroke-ancestor-transform-repaint-rects.html:
 Added.
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::setMayHaveNonScalingStrokeInSubtreeIncludingAncestors):
(WebCore::RenderElement::insertedIntoTree):
* Source/WebCore/rendering/RenderElement.h:
(WebCore::RenderElement::mayHaveNonScalingStrokeInSubtree const):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateTransform):
* Source/WebCore/rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::updateTransformAndRepaintForSVGAfterAttributeChange):
(WebCore::RenderLayerModelObject::invalidateCachedSVGBoundingBoxesOfAncestors 
const):
(WebCore::invalidateNonScalingStrokeCachesInSubtree):
(WebCore::RenderLayerModelObject::invalidateNonScalingStrokeCachesInSubtreeForSVG):
* Source/WebCore/rendering/RenderLayerModelObject.h:
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::updateFromStyle):
(WebCore::RenderSVGModelObject::updateLocalTransform):
(WebCore::RenderSVGModelObject::updateLayerTransform):
* Source/WebCore/rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::updateFromStyle):
(WebCore::RenderSVGShape::invalidateNonScalingStrokeCaches):
* Source/WebCore/rendering/svg/RenderSVGShape.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to