mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
LibWeb: Use invalidation sets for link-related pseudo classes
- :any-link - :link - :local-link
This commit is contained in:
committed by
Alexander Kalenik
parent
719a2e448f
commit
39abd75d59
@@ -72,6 +72,9 @@ static void collect_properties_used_in_has(Selector::SimpleSelector const& selec
|
|||||||
case PseudoClass::Defined:
|
case PseudoClass::Defined:
|
||||||
case PseudoClass::PlaceholderShown:
|
case PseudoClass::PlaceholderShown:
|
||||||
case PseudoClass::Checked:
|
case PseudoClass::Checked:
|
||||||
|
case PseudoClass::Link:
|
||||||
|
case PseudoClass::AnyLink:
|
||||||
|
case PseudoClass::LocalLink:
|
||||||
if (in_has)
|
if (in_has)
|
||||||
style_invalidation_data.pseudo_classes_used_in_has_selectors.set(pseudo_class.type);
|
style_invalidation_data.pseudo_classes_used_in_has_selectors.set(pseudo_class.type);
|
||||||
break;
|
break;
|
||||||
@@ -128,6 +131,9 @@ static void build_invalidation_sets_for_simple_selector(Selector::SimpleSelector
|
|||||||
case PseudoClass::PlaceholderShown:
|
case PseudoClass::PlaceholderShown:
|
||||||
case PseudoClass::Checked:
|
case PseudoClass::Checked:
|
||||||
case PseudoClass::Has:
|
case PseudoClass::Has:
|
||||||
|
case PseudoClass::Link:
|
||||||
|
case PseudoClass::AnyLink:
|
||||||
|
case PseudoClass::LocalLink:
|
||||||
invalidation_set.set_needs_invalidate_pseudo_class(pseudo_class.type);
|
invalidation_set.set_needs_invalidate_pseudo_class(pseudo_class.type);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -30,7 +30,14 @@ void HTMLHyperlinkElementUtils::set_the_url()
|
|||||||
{
|
{
|
||||||
ScopeGuard invalidate_style_if_needed = [old_url = m_url, this] {
|
ScopeGuard invalidate_style_if_needed = [old_url = m_url, this] {
|
||||||
if (m_url != old_url) {
|
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_);
|
Base::attribute_changed(name, old_value, value, namespace_);
|
||||||
|
|
||||||
if (name == SVG::AttributeNames::href) {
|
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 (name == HTML::AttributeNames::rel) {
|
||||||
if (m_rel_list)
|
if (m_rel_list)
|
||||||
|
|||||||
Reference in New Issue
Block a user