Files
ladybird/Libraries/LibWeb/CSS/Invalidation/ElementStateInvalidator.cpp
Andreas Kling 007dc28d16 LibWeb: Move shadow root style invalidation into the helper
Element::set_shadow_root directly selected the style invalidation reason
used when a shadow root changes. Move that mapping into
CSS::Invalidation::ElementStateInvalidator.

Element still owns the shadow-root state transition and the required
layout-tree invalidation. CSS invalidation now owns the style dirtiness
for that state change.
2026-04-29 15:47:23 +02:00

51 lines
1.6 KiB
C++

/*
* Copyright (c) 2026-present, the Ladybird developers
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/CSS/Invalidation/ElementStateInvalidator.h>
#include <LibWeb/DOM/Element.h>
#include <LibWeb/DOM/StyleInvalidationReason.h>
namespace Web::CSS::Invalidation {
void invalidate_style_after_active_state_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::ElementSetActive);
}
void invalidate_style_after_modal_state_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::HTMLDialogElementSetIsModal);
}
void invalidate_style_after_open_state_change(DOM::Element& element)
{
// The :open pseudo-class can affect sibling selectors (e.g. dialog:open + sibling), so keep the existing broad
// subtree and sibling invalidation.
element.invalidate_style(DOM::StyleInvalidationReason::HTMLDetailsOrDialogOpenAttributeChange);
}
void invalidate_style_after_option_selected_state_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::HTMLOptionElementSelectedChange);
}
void invalidate_style_after_input_open_state_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::HTMLInputElementSetIsOpen);
}
void invalidate_style_after_select_open_state_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::HTMLSelectElementSetIsOpen);
}
void invalidate_style_after_shadow_root_change(DOM::Element& element)
{
element.invalidate_style(DOM::StyleInvalidationReason::ElementSetShadowRoot);
}
}