mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-30 12:49:19 +00:00
LibWeb: Invalidate element with CSS custom props on attribute changes
Element styles should be invalidated when they depend on CSS variables defined in one of their ancesors or when one of their ancestors change their class, due to the possibility of adding new CSS variables in scope.
This commit is contained in:
parent
8e1ecd25ae
commit
fa950a5727
Notes:
github-actions[bot]
2025-03-13 18:21:38 +00:00
Author: https://github.com/kmruiz 🔰
Commit: fa950a5727
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3853
Reviewed-by: https://github.com/kalenikaliaksandr ✅
3 changed files with 41 additions and 0 deletions
|
@ -2202,10 +2202,20 @@ void Element::invalidate_style_after_attribute_change(FlyString const& attribute
|
|||
style_invalidation_options.invalidate_self = true;
|
||||
}
|
||||
|
||||
if (style_uses_css_custom_properties()) {
|
||||
// A css custom property can be hooked on to this element by any attribute
|
||||
// so invalidate elements and rerender them in that scenario
|
||||
style_invalidation_options.invalidate_elements_that_use_css_custom_properties = true;
|
||||
}
|
||||
|
||||
if (attribute_name == HTML::AttributeNames::style) {
|
||||
style_invalidation_options.invalidate_self = true;
|
||||
// even if we don't have custom properties, the new "style" attribute could add one
|
||||
style_invalidation_options.invalidate_elements_that_use_css_custom_properties = true;
|
||||
} else if (attribute_name == HTML::AttributeNames::class_) {
|
||||
// adding or removing classes can add new custom properties to this element
|
||||
style_invalidation_options.invalidate_elements_that_use_css_custom_properties = true;
|
||||
|
||||
Vector<StringView> old_classes;
|
||||
Vector<StringView> new_classes;
|
||||
if (old_value.has_value())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue