aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-09-30 11:49:52 -0600
committerbors-servo <metajack+bors@gmail.com>2015-09-30 11:49:52 -0600
commitfb6d0946cb3bac713bc20794f17a40fa7a12bc00 (patch)
tree9e1e02eff18ad5966b0ff06e45331f9ef69a19d5 /components/script/dom
parent3e377bb24e53fde8f7a786cb73caf3aefdcd3699 (diff)
parent7e199f9bda5af6b53eace3032cec9e4f17cea02c (diff)
downloadservo-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.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);
}
}