Files
ladybird/Libraries/LibWeb/CSS/Invalidation/ElementStateInvalidator.cpp
Andreas Kling 83dfed14ad LibWeb: Move input open style invalidation into the helper
HTMLInputElement still mapped its picker open-state change directly to a
style invalidation reason. Move that mapping into
CSS::Invalidation::ElementStateInvalidator alongside the matching select
open-state helper.

This keeps another element-state invalidation decision out of the HTML
implementation without changing the invalidation behavior.
2026-04-29 15:47:23 +02:00

41 lines
1.3 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_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);
}
}