aboutsummaryrefslogtreecommitdiffstats
path: root/src/servo/css/select_handler.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-11-02 18:57:30 -0700
committerBrian Anderson <banderson@mozilla.com>2012-11-02 23:26:43 -0700
commitf6da6bed80d2c35d574e136e4a4dc32ba509f8f5 (patch)
tree90c882906a6077a735405726a5dd966c365cb2a5 /src/servo/css/select_handler.rs
parent301070855e8ea20982b6af742f174d4e9f1298c2 (diff)
downloadservo-f6da6bed80d2c35d574e136e4a4dc32ba509f8f5.tar.gz
servo-f6da6bed80d2c35d574e136e4a4dc32ba509f8f5.zip
Draw simple borders again
Diffstat (limited to 'src/servo/css/select_handler.rs')
-rw-r--r--src/servo/css/select_handler.rs37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/servo/css/select_handler.rs b/src/servo/css/select_handler.rs
index 0b48e08a5df..d0f58b37c16 100644
--- a/src/servo/css/select_handler.rs
+++ b/src/servo/css/select_handler.rs
@@ -1,5 +1,6 @@
-use dom::node::{Node, Doctype, Comment, Element, Text};
+use dom::node::{Node, NodeData, NodeTree, Doctype, Comment, Element, Text};
use newcss::SelectHandler;
+use util::tree;
pub struct NodeSelectHandler {
node: Node
@@ -10,15 +11,39 @@ 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")
+ }
+}
+
impl NodeSelectHandler: SelectHandler<Node> {
fn node_name(node: &Node) -> ~str {
do node.read |data| {
- match *data.kind {
- Doctype(*) => unnamed_node("doctype"),
- Comment(*) => unnamed_node("comment"),
- Element(ref data) => copy data.tag_name,
- Text(*) => unnamed_node("text")
+ node_name(data)
+ }
+ }
+
+ fn named_parent_node(node: &Node, name: &str) -> Option<Node> {
+ let parent = tree::parent(&NodeTree, node);
+ match parent {
+ Some(parent) => {
+ do parent.read |data| {
+ if name == node_name(data) {
+ Some(parent)
+ } else {
+ None
+ }
+ }
}
+ None => None
}
}
+
+ fn parent_node(node: &Node) -> Option<Node> {
+ tree::parent(&NodeTree, node)
+ }
} \ No newline at end of file