mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 12:05:15 +00:00
LibWeb: Use invalidation sets for link-related pseudo classes
- :any-link - :link - :local-link
This commit is contained in:
parent
719a2e448f
commit
39abd75d59
Notes:
github-actions[bot]
2025-02-08 17:12:20 +00:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/39abd75d592 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3504
3 changed files with 22 additions and 2 deletions
|
@ -72,6 +72,9 @@ static void collect_properties_used_in_has(Selector::SimpleSelector const& selec
|
|||
case PseudoClass::Defined:
|
||||
case PseudoClass::PlaceholderShown:
|
||||
case PseudoClass::Checked:
|
||||
case PseudoClass::Link:
|
||||
case PseudoClass::AnyLink:
|
||||
case PseudoClass::LocalLink:
|
||||
if (in_has)
|
||||
style_invalidation_data.pseudo_classes_used_in_has_selectors.set(pseudo_class.type);
|
||||
break;
|
||||
|
@ -128,6 +131,9 @@ static void build_invalidation_sets_for_simple_selector(Selector::SimpleSelector
|
|||
case PseudoClass::PlaceholderShown:
|
||||
case PseudoClass::Checked:
|
||||
case PseudoClass::Has:
|
||||
case PseudoClass::Link:
|
||||
case PseudoClass::AnyLink:
|
||||
case PseudoClass::LocalLink:
|
||||
invalidation_set.set_needs_invalidate_pseudo_class(pseudo_class.type);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -30,7 +30,14 @@ void HTMLHyperlinkElementUtils::set_the_url()
|
|||
{
|
||||
ScopeGuard invalidate_style_if_needed = [old_url = m_url, this] {
|
||||
if (m_url != old_url) {
|
||||
hyperlink_element_utils_element().invalidate_style(DOM::StyleInvalidationReason::HTMLHyperlinkElementHrefChange);
|
||||
hyperlink_element_utils_element().invalidate_style(
|
||||
DOM::StyleInvalidationReason::HTMLHyperlinkElementHrefChange,
|
||||
{
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::AnyLink },
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::Link },
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::LocalLink },
|
||||
},
|
||||
{});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -39,7 +39,14 @@ void SVGAElement::attribute_changed(FlyString const& name, Optional<String> cons
|
|||
Base::attribute_changed(name, old_value, value, namespace_);
|
||||
|
||||
if (name == SVG::AttributeNames::href) {
|
||||
invalidate_style(DOM::StyleInvalidationReason::HTMLHyperlinkElementHrefChange);
|
||||
invalidate_style(
|
||||
DOM::StyleInvalidationReason::HTMLHyperlinkElementHrefChange,
|
||||
{
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::AnyLink },
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::Link },
|
||||
{ .type = CSS::InvalidationSet::Property::Type::PseudoClass, .value = CSS::PseudoClass::LocalLink },
|
||||
},
|
||||
{});
|
||||
}
|
||||
if (name == HTML::AttributeNames::rel) {
|
||||
if (m_rel_list)
|
||||
|
|
Loading…
Add table
Reference in a new issue