diff options
author | David Raifaizen <d-raif@hotmail.com> | 2016-05-18 22:23:06 -0400 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2016-05-25 09:25:38 +0200 |
commit | ff5cfb12a0db9c68571f8d36d16d1325e3db5f79 (patch) | |
tree | cd3fa7d4478f60392e69bbcba05f8f2ac36a9990 /components/script | |
parent | 8b3926079374da8cbcdf50383293aad97e268d76 (diff) | |
download | servo-ff5cfb12a0db9c68571f8d36d16d1325e3db5f79.tar.gz servo-ff5cfb12a0db9c68571f8d36d16d1325e3db5f79.zip |
Restoring node dirty calls after properties are set to trigger mutations
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/cssstyledeclaration.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 7b0c62dabd5..dac16d72bcf 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -10,7 +10,7 @@ use dom::bindings::js::{JS, Root}; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::str::DOMString; use dom::element::{Element, StylePriority}; -use dom::node::{Node, window_from_node}; +use dom::node::{Node, NodeDamage, window_from_node}; use dom::window::Window; use std::ascii::AsciiExt; use std::cell::Ref; @@ -246,6 +246,8 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // Step 9 element.update_inline_style(declarations, priority); + let node = element.upcast::<Node>(); + node.dirty(NodeDamage::NodeStyleDamaged); Ok(()) } @@ -278,6 +280,8 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { None => element.set_inline_style_property_priority(&[&*property], priority), } + let node = element.upcast::<Node>(); + node.dirty(NodeDamage::NodeStyleDamaged); Ok(()) } @@ -299,19 +303,22 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // Step 3 let value = self.GetPropertyValue(property.clone()); - let elem = self.owner.upcast::<Element>(); + let element = self.owner.upcast::<Element>(); match Shorthand::from_name(&property) { // Step 4 Some(shorthand) => { for longhand in shorthand.longhands() { - elem.remove_inline_style_property(longhand) + element.remove_inline_style_property(longhand) } } // Step 5 - None => elem.remove_inline_style_property(&property), + None => element.remove_inline_style_property(&property), } + let node = element.upcast::<Node>(); + node.dirty(NodeDamage::NodeStyleDamaged); + // Step 6 Ok(value) } |