mirror of
https://github.com/servo/servo.git
synced 2025-06-25 09:34:32 +01:00
Add NodeHelpers::get_content_boxes().
This commit is contained in:
parent
dce92dc44a
commit
7d511f4baf
2 changed files with 14 additions and 6 deletions
|
@ -20,8 +20,7 @@ use dom::htmlcollection::HTMLCollection;
|
||||||
use dom::htmlserializer::serialize;
|
use dom::htmlserializer::serialize;
|
||||||
use dom::node::{ElementNodeTypeId, Node, NodeHelpers, NodeIterator, document_from_node};
|
use dom::node::{ElementNodeTypeId, Node, NodeHelpers, NodeIterator, document_from_node};
|
||||||
use dom::virtualmethods::{VirtualMethods, vtable_for};
|
use dom::virtualmethods::{VirtualMethods, vtable_for};
|
||||||
use layout_interface::{ContentBoxesQuery};
|
use layout_interface::ContentChangedDocumentDamage;
|
||||||
use layout_interface::{ContentBoxesResponse, ContentChangedDocumentDamage};
|
|
||||||
use layout_interface::MatchSelectorsDocumentDamage;
|
use layout_interface::MatchSelectorsDocumentDamage;
|
||||||
use style;
|
use style;
|
||||||
use servo_util::namespace;
|
use servo_util::namespace;
|
||||||
|
@ -605,9 +604,7 @@ impl Element {
|
||||||
let doc = self.node.owner_doc();
|
let doc = self.node.owner_doc();
|
||||||
let win = &doc.get().window;
|
let win = &doc.get().window;
|
||||||
let node: JS<Node> = NodeCast::from(abstract_self);
|
let node: JS<Node> = NodeCast::from(abstract_self);
|
||||||
let (chan, port) = channel();
|
let rects = node.get_content_boxes();
|
||||||
let addr = node.to_trusted_node_address();
|
|
||||||
let ContentBoxesResponse(rects) = win.get().page().query_layout(ContentBoxesQuery(addr, chan), port);
|
|
||||||
let rects = rects.map(|r| {
|
let rects = rects.map(|r| {
|
||||||
ClientRect::new(
|
ClientRect::new(
|
||||||
win,
|
win,
|
||||||
|
|
|
@ -28,7 +28,8 @@ use dom::virtualmethods::{VirtualMethods, vtable_for};
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use geom::rect::Rect;
|
use geom::rect::Rect;
|
||||||
use html::hubbub_html_parser::build_element_from_tag;
|
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::geometry::Au;
|
||||||
use servo_util::str::{DOMString, null_str_as_empty};
|
use servo_util::str::{DOMString, null_str_as_empty};
|
||||||
|
|
||||||
|
@ -286,6 +287,7 @@ pub trait NodeHelpers {
|
||||||
fn to_trusted_node_address(&self) -> TrustedNodeAddress;
|
fn to_trusted_node_address(&self) -> TrustedNodeAddress;
|
||||||
|
|
||||||
fn get_bounding_content_box(&self) -> Rect<Au>;
|
fn get_bounding_content_box(&self) -> Rect<Au>;
|
||||||
|
fn get_content_boxes(&self) -> ~[Rect<Au>];
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NodeHelpers for JS<Node> {
|
impl NodeHelpers for JS<Node> {
|
||||||
|
@ -577,6 +579,15 @@ impl NodeHelpers for JS<Node> {
|
||||||
let ContentBoxResponse(rect) = page.query_layout(ContentBoxQuery(addr, chan), port);
|
let ContentBoxResponse(rect) = page.query_layout(ContentBoxQuery(addr, chan), port);
|
||||||
rect
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue