Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 63a655702b0109ffa21df1c21f7307af5bc8e598
https://github.com/WebKit/WebKit/commit/63a655702b0109ffa21df1c21f7307af5bc8e598
Author: Tim Nguyen <[email protected]>
Date: 2023-04-29 (Sat, 29 Apr 2023)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-expected.xht
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent-expected.xht
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/currentcolor-border-repaint-parent-expected.xht
A
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/currentcolor-border-repaint-parent.html
M Source/WebCore/animation/CSSPropertyAnimation.cpp
M Source/WebCore/css/StyleColor.cpp
M Source/WebCore/css/StyleColor.h
M Source/WebCore/css/color/CSSUnresolvedColor.cpp
M Source/WebCore/css/color/CSSUnresolvedColor.h
M Source/WebCore/editing/EditingStyle.cpp
M Source/WebCore/rendering/style/BorderData.cpp
M Source/WebCore/rendering/style/RenderStyle.cpp
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/style/SVGRenderStyle.cpp
M Source/WebCore/rendering/style/StyleGradientImage.cpp
M Source/WebCore/style/ElementRuleCollector.cpp
M Source/WebCore/svg/properties/SVGAnimationAdditiveValueFunctionImpl.cpp
Log Message:
-----------
Repaint issues with currentColor & color-mix()
https://bugs.webkit.org/show_bug.cgi?id=256118
rdar://104872702
Reviewed by Antti Koivisto.
There are 2 different issues:
1. Raw `currentColor` (even without `color-mix()`) will not repaint if the
color was changed on the ancestors
2. Using `currentColor` inside `color-mix()` will not repaint if the color was
changed (either on the element itself or the ancestors)
1. is fixed by taking in account currentColor changes in
`RenderStyle::changeRequiresRepaint()`
2. is fixed by introducing a `containsCurrentColor()` helper taking in account
nested currentColor inside `color-mix()`, and replacing appropriate
`isCurrentColor()` checks.
Also remove `RenderStyle::isCurrentColor()` since it does not add much value.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-expected.xht:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent-expected.xht:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/currentcolor-border-repaint-parent-expected.xht:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-backgrounds/currentcolor-border-repaint-parent.html:
Added.
* Source/WebCore/animation/CSSPropertyAnimation.cpp:
(WebCore::blendSyntaxValues):
* Source/WebCore/css/StyleColor.cpp:
(WebCore::StyleColor::containsCurrentColor):
(WebCore::StyleColor::containsCurrentColor const):
* Source/WebCore/css/StyleColor.h:
* Source/WebCore/css/color/CSSUnresolvedColor.cpp:
(WebCore::CSSUnresolvedColor::containsCurrentColor const):
* Source/WebCore/css/color/CSSUnresolvedColor.h:
* Source/WebCore/editing/EditingStyle.cpp:
(WebCore::EditingStyle::removeTextFillAndStrokeColorsIfNeeded):
* Source/WebCore/rendering/style/BorderData.cpp:
(WebCore::BorderData::isEquivalentForPainting const):
* Source/WebCore/rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresRepaint const):
(WebCore::RenderStyle::colorResolvingCurrentColor const):
* Source/WebCore/rendering/style/RenderStyle.h:
(WebCore::RenderStyle::currentColor):
(WebCore::RenderStyle::isCurrentColor): Deleted.
* Source/WebCore/rendering/style/SVGRenderStyle.cpp:
(WebCore::colorChangeRequiresRepaint):
* Source/WebCore/rendering/style/StyleGradientImage.cpp:
(WebCore::stopsAreCacheable):
* Source/WebCore/style/ElementRuleCollector.cpp:
(WebCore::Style::ElementRuleCollector::addMatchedProperties):
* Source/WebCore/svg/properties/SVGAnimationAdditiveValueFunctionImpl.cpp:
(WebCore::SVGAnimationColorFunction::calculateDistance const):
Canonical link: https://commits.webkit.org/263531@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes