aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorDavid Raifaizen <d-raif@hotmail.com>2016-05-18 22:23:06 -0400
committerSimon Sapin <simon.sapin@exyr.org>2016-05-25 09:25:38 +0200
commitff5cfb12a0db9c68571f8d36d16d1325e3db5f79 (patch)
treecd3fa7d4478f60392e69bbcba05f8f2ac36a9990 /components/script
parent8b3926079374da8cbcdf50383293aad97e268d76 (diff)
downloadservo-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.rs15
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)
}