diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/servo/css/matching.rs | 13 | ||||
-rw-r--r-- | src/servo/css/node_style.rs | 1 | ||||
-rw-r--r-- | src/servo/css/select_handler.rs | 9 | ||||
-rw-r--r-- | src/servo/dom/node.rs | 6 | ||||
-rw-r--r-- | src/servo/layout/box.rs | 5 |
5 files changed, 21 insertions, 13 deletions
diff --git a/src/servo/css/matching.rs b/src/servo/css/matching.rs index 2f3408e8c40..a2b39e84e56 100644 --- a/src/servo/css/matching.rs +++ b/src/servo/css/matching.rs @@ -27,10 +27,13 @@ impl Node : MatchMethods { kid.restyle_subtree(select_ctx); } - let select_handler = NodeSelectHandler { - node: self - }; - let style = select_ctx.select_style(&self, &select_handler); - self.set_css_select_results(move style); + // Only elements have styles + if self.is_element() { + let select_handler = NodeSelectHandler { + node: self + }; + let style = select_ctx.select_style(&self, &select_handler); + self.set_css_select_results(move style); + } } } diff --git a/src/servo/css/node_style.rs b/src/servo/css/node_style.rs index 1ab1a4f905d..70209a761fb 100644 --- a/src/servo/css/node_style.rs +++ b/src/servo/css/node_style.rs @@ -25,6 +25,7 @@ trait StyledNode { impl Node: StyledNode { fn style(&self) -> NodeStyle/&self { + assert self.is_element(); // Only elements can have styles NodeStyle::new(self) } } diff --git a/src/servo/css/select_handler.rs b/src/servo/css/select_handler.rs index 861de58fbf1..e3d94cfa6d9 100644 --- a/src/servo/css/select_handler.rs +++ b/src/servo/css/select_handler.rs @@ -6,17 +6,10 @@ pub struct NodeSelectHandler { node: Node } -/// Placeholder names -fn unnamed_node(name: &str) -> ~str { - fmt!("unnamed-%s", name) -} - fn node_name(data: &NodeData) -> ~str { match *data.kind { - Doctype(*) => unnamed_node("doctype"), - Comment(*) => unnamed_node("comment"), Element(ref data) => copy data.tag_name, - Text(*) => unnamed_node("text") + _ => fail ~"attempting to style non-element node" } } diff --git a/src/servo/dom/node.rs b/src/servo/dom/node.rs index d4d6e2e6bbe..6650c76ae6c 100644 --- a/src/servo/dom/node.rs +++ b/src/servo/dom/node.rs @@ -71,6 +71,12 @@ impl Node : DebugMethods { } } +impl Node { + fn is_element(&self) -> bool { + self.read(|n| match *n.kind { Element(*) => true, _ => false } ) + } +} + pub enum NodeKind { Doctype(DoctypeData), Comment(~str), diff --git a/src/servo/layout/box.rs b/src/servo/layout/box.rs index 1754df0b6b4..4934f82f2f7 100644 --- a/src/servo/layout/box.rs +++ b/src/servo/layout/box.rs @@ -435,6 +435,9 @@ impl RenderBox : RenderBoxMethods { fn add_bgcolor_to_list(list: &mut DisplayList, abs_bounds: &Rect<Au>) { use std::cmp::FuzzyEq; + + if !self.d().node.is_element() { return } + let bgcolor = self.style().background_color(); if !bgcolor.alpha.fuzzy_eq(&0.0) { list.append_item(~DisplayItem::new_SolidColor(abs_bounds, bgcolor.to_gfx_color())); @@ -442,6 +445,8 @@ impl RenderBox : RenderBoxMethods { } fn add_border_to_list(list: &mut DisplayList, abs_bounds: &Rect<Au>) { + if !self.d().node.is_element() { return } + let top_width = self.style().border_top_width(); let right_width = self.style().border_right_width(); let bottom_width = self.style().border_bottom_width(); |