diff options
-rw-r--r-- | src/components/script/dom/element.rs | 7 | ||||
-rw-r--r-- | src/components/script/dom/node.rs | 13 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index bd0f6bb9b81..156f49f67a3 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -20,8 +20,7 @@ use dom::htmlcollection::HTMLCollection; use dom::htmlserializer::serialize; use dom::node::{ElementNodeTypeId, Node, NodeHelpers, NodeIterator, document_from_node}; use dom::virtualmethods::{VirtualMethods, vtable_for}; -use layout_interface::{ContentBoxesQuery}; -use layout_interface::{ContentBoxesResponse, ContentChangedDocumentDamage}; +use layout_interface::ContentChangedDocumentDamage; use layout_interface::MatchSelectorsDocumentDamage; use style; use servo_util::namespace; @@ -605,9 +604,7 @@ impl Element { let doc = self.node.owner_doc(); let win = &doc.get().window; let node: JS<Node> = NodeCast::from(abstract_self); - let (chan, port) = channel(); - let addr = node.to_trusted_node_address(); - let ContentBoxesResponse(rects) = win.get().page().query_layout(ContentBoxesQuery(addr, chan), port); + let rects = node.get_content_boxes(); let rects = rects.map(|r| { ClientRect::new( win, diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 53c3776fab5..35a2028478e 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -28,7 +28,8 @@ use dom::virtualmethods::{VirtualMethods, vtable_for}; use dom::window::Window; use geom::rect::Rect; use html::hubbub_html_parser::build_element_from_tag; -use layout_interface::{ContentBoxQuery, ContentBoxResponse, LayoutChan, ReapLayoutDataMsg, TrustedNodeAddress, UntrustedNodeAddress}; +use layout_interface::{ContentBoxQuery, ContentBoxResponse, ContentBoxesQuery, ContentBoxesResponse, + LayoutChan, ReapLayoutDataMsg, TrustedNodeAddress, UntrustedNodeAddress}; use servo_util::geometry::Au; use servo_util::str::{DOMString, null_str_as_empty}; @@ -286,6 +287,7 @@ pub trait NodeHelpers { fn to_trusted_node_address(&self) -> TrustedNodeAddress; fn get_bounding_content_box(&self) -> Rect<Au>; + fn get_content_boxes(&self) -> ~[Rect<Au>]; } impl NodeHelpers for JS<Node> { @@ -577,6 +579,15 @@ impl NodeHelpers for JS<Node> { let ContentBoxResponse(rect) = page.query_layout(ContentBoxQuery(addr, chan), port); rect } + + fn get_content_boxes(&self) -> ~[Rect<Au>] { + let window = window_from_node(self); + let page = window.get().page(); + let (chan, port) = channel(); + let addr = self.to_trusted_node_address(); + let ContentBoxesResponse(rects) = page.query_layout(ContentBoxesQuery(addr, chan), port); + rects + } } // |