aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/characterdata.rs
diff options
context:
space:
mode:
authorMatt Brubeck <mbrubeck@limpet.net>2015-09-29 15:35:42 -0700
committerMatt Brubeck <mbrubeck@limpet.net>2015-09-29 16:40:46 -0700
commit7e199f9bda5af6b53eace3032cec9e4f17cea02c (patch)
tree3014b368f9386391b3d0268b3a22f06b37b6b789 /components/script/dom/characterdata.rs
parent0c64e4a2c98cbf5e7b95dbea31c2e6993b70472c (diff)
downloadservo-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.rs13
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);
}
}