diff options
Diffstat (limited to 'components/script/dom/document.rs')
-rw-r--r-- | components/script/dom/document.rs | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 738ac6be90e..c4dc787ac26 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -49,7 +49,7 @@ use dom::mouseevent::MouseEvent; use dom::keyboardevent::KeyboardEvent; use dom::messageevent::MessageEvent; use dom::node::{Node, ElementNodeTypeId, DocumentNodeTypeId, NodeHelpers}; -use dom::node::{CloneChildren, DoNotCloneChildren}; +use dom::node::{CloneChildren, DoNotCloneChildren, NodeDamage, OtherNodeDamage}; use dom::nodelist::NodeList; use dom::text::Text; use dom::processinginstruction::ProcessingInstruction; @@ -176,10 +176,8 @@ pub trait DocumentHelpers<'a> { fn set_quirks_mode(self, mode: QuirksMode); fn set_last_modified(self, value: DOMString); fn set_encoding_name(self, name: DOMString); - fn content_changed(self, node: JSRef<Node>); - fn content_and_heritage_changed(self, node: JSRef<Node>); - fn reflow(self); - fn wait_until_safe_to_modify_dom(self); + fn content_changed(self, node: JSRef<Node>, damage: NodeDamage); + fn content_and_heritage_changed(self, node: JSRef<Node>, damage: NodeDamage); fn unregister_named_element(self, to_unregister: JSRef<Element>, id: Atom); fn register_named_element(self, element: JSRef<Element>, id: Atom); fn load_anchor_href(self, href: DOMString); @@ -190,6 +188,7 @@ pub trait DocumentHelpers<'a> { fn request_focus(self, elem: JSRef<Element>); fn commit_focus_transaction(self); fn send_title_to_compositor(self); + fn dirty_all_nodes(self); } impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { @@ -228,24 +227,14 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { *self.encoding_name.borrow_mut() = name; } - fn content_changed(self, node: JSRef<Node>) { - debug!("content_changed on {}", node.debug_str()); - node.dirty(); - self.reflow(); + fn content_changed(self, node: JSRef<Node>, damage: NodeDamage) { + node.dirty(damage); } - fn content_and_heritage_changed(self, node: JSRef<Node>) { + fn content_and_heritage_changed(self, node: JSRef<Node>, damage: NodeDamage) { debug!("content_and_heritage_changed on {}", node.debug_str()); - node.force_dirty_ancestors(); - self.reflow(); - } - - fn reflow(self) { - self.window.root().reflow(); - } - - fn wait_until_safe_to_modify_dom(self) { - self.window.root().wait_until_safe_to_modify_dom(); + node.force_dirty_ancestors(damage); + node.dirty(damage); } /// Remove any existing association between the provided id and any elements in this document. @@ -376,6 +365,13 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { let window = self.window().root(); window.page().send_title_to_compositor(); } + + fn dirty_all_nodes(self) { + let root: JSRef<Node> = NodeCast::from_ref(self); + for node in root.traverse_preorder() { + node.dirty(OtherNodeDamage) + } + } } #[deriving(PartialEq)] |