Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6aa1f6767674ab7a07f899d2f3a9d338c7c95244
      
https://github.com/WebKit/WebKit/commit/6aa1f6767674ab7a07f899d2f3a9d338c7c95244
  Author: Simon Fraser <simon.fra...@apple.com>
  Date:   2023-11-28 (Tue, 28 Nov 2023)

  Changed paths:
    M LayoutTests/fast/box-shadow/negative-shadow-box-expand-expected.txt
    M LayoutTests/fast/box-shadow/negative-shadow-box-shrink-expected.txt
    A LayoutTests/fast/repaint/outline-and-shadow-repaint-expected.txt
    A LayoutTests/fast/repaint/outline-and-shadow-repaint.html
    M LayoutTests/platform/gtk/fast/repaint/4776765-expected.txt
    M LayoutTests/platform/mac-monterey-wk2/fast/repaint/4776765-expected.txt
    M LayoutTests/platform/mac-ventura-wk2/fast/repaint/4776765-expected.txt
    M LayoutTests/platform/mac-wk1/fast/repaint/4776765-expected.txt
    M LayoutTests/platform/mac/fast/repaint/4776765-expected.txt
    M Source/WebCore/display/css/DisplayBoxModelBox.cpp
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/style/RenderStyle.cpp
    M Source/WebCore/rendering/style/RenderStyle.h
    M Source/WebCore/rendering/style/RenderStyleInlines.h
    M Source/WebCore/rendering/style/ShadowData.cpp
    M Source/WebCore/rendering/style/ShadowData.h
    M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp

  Log Message:
  -----------
  RenderBox::applyVisualEffectOverflow() and 
RenderBox::outlineBoundsForRepaint() use different ways of computing 
outline/shadow extent
https://bugs.webkit.org/show_bug.cgi?id=264625
rdar://118582062

Reviewed by Alan Baradlay.

The logic in `ShadowData::adjustRectForShadow()` to compute the impact of 
box-shadow and outline
on a rect was wrong; the outline is not shadowed, so outline and shadow have 
independent effects
on the repaint rect. The correct implementation is to just compute their 
effects separately, and
take the union of the result, which is what 
`RenderBox::applyVisualEffectOverflow()` already
does.

So remove the outline argument from `ShadowData::adjustRectForShadow()` and 
delete
`RenderObject::adjustRectForOutlineAndShadow()`. 
`RenderBox::outlineBoundsForRepaint()` now just
calls `applyVisualEffectOverflow()`, and LegacyRenderSVGModelObject gets its 
own copy of the old
code because it's not clear how shadows and outlines interact in SVG.

There was also code duplication between `RenderStyle::shadowExtent()` and code 
in ShadowData, so
remove the RenderStyle code and have it call into ShadowData.

* LayoutTests/fast/box-shadow/negative-shadow-box-expand-expected.txt:
* LayoutTests/fast/box-shadow/negative-shadow-box-shrink-expected.txt:
* LayoutTests/fast/repaint/outline-and-shadow-repaint-expected.txt: Added.
* LayoutTests/fast/repaint/outline-and-shadow-repaint.html: Added.
* LayoutTests/platform/gtk/fast/repaint/4776765-expected.txt:
* LayoutTests/platform/mac-monterey-wk2/fast/repaint/4776765-expected.txt:
* LayoutTests/platform/mac-ventura-wk2/fast/repaint/4776765-expected.txt:
* LayoutTests/platform/mac-wk1/fast/repaint/4776765-expected.txt:
* LayoutTests/platform/mac/fast/repaint/4776765-expected.txt:
* Source/WebCore/display/css/DisplayBoxModelBox.cpp:
(WebCore::Display::BoxModelBox::absolutePaintingExtent const):
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::outlineBoundsForRepaint const):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::adjustRectForOutlineAndShadow const): Deleted.
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::shadowExtent): Deleted.
(WebCore::RenderStyle::shadowInsetExtent): Deleted.
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/RenderStyleInlines.h:
(WebCore::RenderStyle::boxShadowExtent const):
(WebCore::RenderStyle::boxShadowInsetExtent const):
(WebCore::RenderStyle::textShadowExtent const):
* Source/WebCore/rendering/style/ShadowData.cpp:
(WebCore::ShadowData::shadowOutsetExtent const):
(WebCore::ShadowData::shadowInsetExtent const):
(WebCore::ShadowData::adjustRectForShadow const):
(WebCore::calculateShadowExtent): Deleted.
* Source/WebCore/rendering/style/ShadowData.h:
(WebCore::ShadowData::shadowOutsetExtent):
(WebCore::ShadowData::shadowInsetExtent):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp:
(WebCore::adjustRectForOutlineAndShadow):
(WebCore::LegacyRenderSVGModelObject::outlineBoundsForRepaint const):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to