diff options
author | Matt Brubeck <mbrubeck@limpet.net> | 2015-09-29 15:35:42 -0700 |
---|---|---|
committer | Matt Brubeck <mbrubeck@limpet.net> | 2015-09-29 16:40:46 -0700 |
commit | 7e199f9bda5af6b53eace3032cec9e4f17cea02c (patch) | |
tree | 3014b368f9386391b3d0268b3a22f06b37b6b789 /components/script/dom/characterdata.rs | |
parent | 0c64e4a2c98cbf5e7b95dbea31c2e6993b70472c (diff) | |
download | servo-7e199f9bda5af6b53eace3032cec9e4f17cea02c.tar.gz servo-7e199f9bda5af6b53eace3032cec9e4f17cea02c.zip |
Dirty text nodes when their content changes
Fixes #7793.
Diffstat (limited to 'components/script/dom/characterdata.rs')
-rw-r--r-- | components/script/dom/characterdata.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index 2983ca1ea51..58f71d40d7c 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -15,7 +15,7 @@ use dom::bindings::js::{LayoutJS, Root}; use dom::document::Document; use dom::element::Element; use dom::eventtarget::{EventTarget, EventTargetTypeId}; -use dom::node::{Node, NodeTypeId}; +use dom::node::{Node, NodeDamage, NodeTypeId}; use std::borrow::ToOwned; use std::cell::Ref; use util::str::DOMString; @@ -54,6 +54,7 @@ impl CharacterDataMethods for CharacterData { // https://dom.spec.whatwg.org/#dom-characterdata-data fn SetData(&self, data: DOMString) { *self.data.borrow_mut() = data; + self.content_changed(); } // https://dom.spec.whatwg.org/#dom-characterdata-length @@ -117,6 +118,7 @@ impl CharacterDataMethods for CharacterData { new_data }; *self.data.borrow_mut() = new_data; + self.content_changed(); // FIXME: Once we have `Range`, we should implement step 8 to step 11 Ok(()) } @@ -171,7 +173,14 @@ impl CharacterData { } #[inline] pub fn append_data(&self, data: &str) { - self.data.borrow_mut().push_str(data) + self.data.borrow_mut().push_str(data); + self.content_changed(); + } + + fn content_changed(&self) { + let node = NodeCast::from_ref(self); + let document = node.owner_doc(); + document.r().content_changed(node, NodeDamage::OtherNodeDamage); } } |