diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-09-30 11:49:52 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-09-30 11:49:52 -0600 |
commit | fb6d0946cb3bac713bc20794f17a40fa7a12bc00 (patch) | |
tree | 9e1e02eff18ad5966b0ff06e45331f9ef69a19d5 /components/script/dom | |
parent | 3e377bb24e53fde8f7a786cb73caf3aefdcd3699 (diff) | |
parent | 7e199f9bda5af6b53eace3032cec9e4f17cea02c (diff) | |
download | servo-fb6d0946cb3bac713bc20794f17a40fa7a12bc00.tar.gz servo-fb6d0946cb3bac713bc20794f17a40fa7a12bc00.zip |
Auto merge of #7794 - mbrubeck:setdata, r=pcwalton
Dirty text nodes when their content changes
Fixes #7793. r? @pcwalton
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7794)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom')
-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); } } |