mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-17 07:50:04 +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
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org>
|
||||
* Copyright (c) 2021-2024, Sam Atkins <sam@ladybird.org>
|
||||
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
|
||||
*
|
||||
|
@ -14,6 +14,7 @@
|
|||
#include <LibWeb/Bindings/PlatformObject.h>
|
||||
#include <LibWeb/CSS/CSSRule.h>
|
||||
#include <LibWeb/Forward.h>
|
||||
#include <LibWeb/TraversalOrder.h>
|
||||
#include <LibWeb/WebIDL/ExceptionOr.h>
|
||||
|
||||
namespace Web::CSS {
|
||||
|
@ -56,10 +57,9 @@ public:
|
|||
WebIDL::ExceptionOr<void> remove_a_css_rule(u32 index);
|
||||
WebIDL::ExceptionOr<unsigned> insert_a_css_rule(Variant<StringView, CSSRule*>, u32 index);
|
||||
|
||||
void for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const;
|
||||
void for_each_effective_rule(TraversalOrder, Function<void(CSSRule const&)> const& callback) const;
|
||||
// Returns whether the match state of any media queries changed after evaluation.
|
||||
bool evaluate_media_queries(HTML::Window const&);
|
||||
void for_each_effective_keyframes_at_rule(Function<void(CSSKeyframesRule const&)> const& callback) const;
|
||||
|
||||
void set_rules(Badge<CSSStyleSheet>, Vector<JS::NonnullGCPtr<CSSRule>> rules) { m_rules = move(rules); }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue