mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-02 06:09:08 +00:00
LibWeb/CSS: Replace style-rule iteration methods with a generic one
I didn't want to add another set of boilerplatey tree-walking methods, so here's a general-purpose one. :^) `for_each_effective_rule()` walks the tree of effective style rules, and runs the callback on each one, in either pre- or postorder. The previous `for_each_effective_style/keyframes_rule()` methods of `CSSStyleSheet` are then reimplemented in terms of `for_each_effective_rule()`, and we can get rid of their equivalents elsewhere.
This commit is contained in:
parent
4c98906e2c
commit
cbb4be3e5e
Notes:
github-actions[bot]
2024-09-06 05:50:56 +00:00
Author: https://github.com/AtkinsSJ
Commit: cbb4be3e5e
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1291
9 changed files with 53 additions and 67 deletions
|
@ -294,17 +294,26 @@ WebIDL::ExceptionOr<void> CSSStyleSheet::remove_rule(Optional<WebIDL::UnsignedLo
|
|||
return delete_rule(index.value_or(0));
|
||||
}
|
||||
|
||||
void CSSStyleSheet::for_each_effective_rule(TraversalOrder order, Function<void(Web::CSS::CSSRule const&)> const& callback) const
|
||||
{
|
||||
if (m_media->matches())
|
||||
m_rules->for_each_effective_rule(order, callback);
|
||||
}
|
||||
|
||||
void CSSStyleSheet::for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const
|
||||
{
|
||||
if (m_media->matches()) {
|
||||
m_rules->for_each_effective_style_rule(callback);
|
||||
}
|
||||
for_each_effective_rule(TraversalOrder::Preorder, [&](CSSRule const& rule) {
|
||||
if (rule.type() == CSSRule::Type::Style)
|
||||
callback(static_cast<CSSStyleRule const&>(rule));
|
||||
});
|
||||
}
|
||||
|
||||
void CSSStyleSheet::for_each_effective_keyframes_at_rule(Function<void(CSSKeyframesRule const&)> const& callback) const
|
||||
{
|
||||
if (m_media->matches())
|
||||
m_rules->for_each_effective_keyframes_at_rule(callback);
|
||||
for_each_effective_rule(TraversalOrder::Preorder, [&](CSSRule const& rule) {
|
||||
if (rule.type() == CSSRule::Type::Keyframes)
|
||||
callback(static_cast<CSSKeyframesRule const&>(rule));
|
||||
});
|
||||
}
|
||||
|
||||
bool CSSStyleSheet::evaluate_media_queries(HTML::Window const& window)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue