mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Introduce a closure to replace rule nodes.
We need a scope to restore rule_node_changed that were borrowed by the closure. This closure function will be used for animation-only restyles as well.
This commit is contained in:
parent
749189bad5
commit
6d5ee2e361
1 changed files with 22 additions and 20 deletions
|
@ -954,30 +954,32 @@ pub trait MatchMethods : TElement {
|
|||
context: &StyleContext<Self>,
|
||||
data: &mut AtomicRefMut<ElementData>)
|
||||
-> bool {
|
||||
use properties::PropertyDeclarationBlock;
|
||||
use shared_lock::Locked;
|
||||
|
||||
let primary_rules = &mut data.styles_mut().primary.rules;
|
||||
let mut rule_node_changed = false;
|
||||
|
||||
if hint.contains(RESTYLE_STYLE_ATTRIBUTE) {
|
||||
let style_attribute = self.style_attribute();
|
||||
{
|
||||
let mut replace_rule_node = |level: CascadeLevel,
|
||||
pdb: Option<&Arc<Locked<PropertyDeclarationBlock>>>,
|
||||
path: &mut StrongRuleNode| {
|
||||
let new_node = context.shared.stylist.rule_tree
|
||||
.update_rule_at_level(level, pdb, path, &context.shared.guards);
|
||||
if let Some(n) = new_node {
|
||||
*path = n;
|
||||
rule_node_changed = true;
|
||||
}
|
||||
};
|
||||
|
||||
let new_node = context.shared.stylist.rule_tree
|
||||
.update_rule_at_level(CascadeLevel::StyleAttributeNormal,
|
||||
style_attribute,
|
||||
primary_rules,
|
||||
&context.shared.guards);
|
||||
if let Some(n) = new_node {
|
||||
*primary_rules = n;
|
||||
rule_node_changed = true;
|
||||
}
|
||||
|
||||
let new_node = context.shared.stylist.rule_tree
|
||||
.update_rule_at_level(CascadeLevel::StyleAttributeImportant,
|
||||
style_attribute,
|
||||
primary_rules,
|
||||
&context.shared.guards);
|
||||
if let Some(n) = new_node {
|
||||
*primary_rules = n;
|
||||
rule_node_changed = true;
|
||||
if hint.contains(RESTYLE_STYLE_ATTRIBUTE) {
|
||||
let style_attribute = self.style_attribute();
|
||||
replace_rule_node(CascadeLevel::StyleAttributeNormal,
|
||||
style_attribute,
|
||||
primary_rules);
|
||||
replace_rule_node(CascadeLevel::StyleAttributeImportant,
|
||||
style_attribute,
|
||||
primary_rules);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue