diff options
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r-- | components/script/dom/element.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 3a8ac8f0cd8..2831fc3d8f0 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -327,7 +327,21 @@ impl Element { ) } - impl_rare_data!(ElementRareData); + fn rare_data(&self) -> Ref<Option<Box<ElementRareData>>> { + self.rare_data.borrow() + } + + fn rare_data_mut(&self) -> RefMut<Option<Box<ElementRareData>>> { + self.rare_data.borrow_mut() + } + + fn ensure_rare_data(&self) -> RefMut<Box<ElementRareData>> { + let mut rare_data = self.rare_data.borrow_mut(); + if rare_data.is_none() { + *rare_data = Some(Default::default()); + } + RefMut::map(rare_data, |rare_data| rare_data.as_mut().unwrap()) + } pub(crate) fn restyle(&self, damage: NodeDamage) { let doc = self.node.owner_doc(); |