Make StrongRuleNode::ensure_child take a StrongRuleNode for the root

This commit is contained in:
Anthony Ramine 2020-04-16 16:20:47 +02:00
parent 37c70609f9
commit fb28ce6bbe
2 changed files with 11 additions and 10 deletions

View file

@ -367,7 +367,7 @@ impl StrongRuleNode {
StrongRuleNode { p }
}
pub(super) fn downgrade(&self) -> WeakRuleNode {
fn downgrade(&self) -> WeakRuleNode {
unsafe { WeakRuleNode::from_ptr(self.p) }
}
@ -378,7 +378,7 @@ impl StrongRuleNode {
pub(super) fn ensure_child(
&self,
root: WeakRuleNode,
root: &StrongRuleNode,
source: StyleSource,
level: CascadeLevel,
) -> StrongRuleNode {
@ -404,6 +404,7 @@ impl StrongRuleNode {
key,
|node| unsafe { (*node.ptr()).key() },
move || {
let root = root.downgrade();
let strong =
StrongRuleNode::new(Box::new(RuleNode::new(root, self.clone(), source, level)));
let weak = strong.downgrade();

View file

@ -95,7 +95,7 @@ impl RuleTree {
debug_assert!(transition.is_none());
transition = Some(source);
} else {
current = current.ensure_child(self.root().downgrade(), source, level);
current = current.ensure_child(self.root(), source, level);
}
}
@ -131,7 +131,7 @@ impl RuleTree {
for (source, shadow_cascade_order) in important_author.drain(..) {
current = current.ensure_child(
self.root().downgrade(),
self.root(),
source,
AuthorImportant {
shadow_cascade_order: -shadow_cascade_order,
@ -140,15 +140,15 @@ impl RuleTree {
}
for source in important_user.drain(..) {
current = current.ensure_child(self.root().downgrade(), source, UserImportant);
current = current.ensure_child(self.root(), source, UserImportant);
}
for source in important_ua.drain(..) {
current = current.ensure_child(self.root().downgrade(), source, UAImportant);
current = current.ensure_child(self.root(), source, UAImportant);
}
if let Some(source) = transition {
current = current.ensure_child(self.root().downgrade(), source, Transitions);
current = current.ensure_child(self.root(), source, Transitions);
}
current
@ -182,7 +182,7 @@ impl RuleTree {
{
let mut current = from;
for (source, level) in iter {
current = current.ensure_child(self.root().downgrade(), source, level);
current = current.ensure_child(self.root(), source, level);
}
current
}
@ -262,7 +262,7 @@ impl RuleTree {
if level.is_important() {
if pdb.read_with(level.guard(guards)).any_important() {
current = current.ensure_child(
self.root().downgrade(),
self.root(),
StyleSource::from_declarations(pdb.clone_arc()),
level,
);
@ -271,7 +271,7 @@ impl RuleTree {
} else {
if pdb.read_with(level.guard(guards)).any_normal() {
current = current.ensure_child(
self.root().downgrade(),
self.root(),
StyleSource::from_declarations(pdb.clone_arc()),
level,
);