Stop using Option in ThreadSafeLayoutNodeChildrenIterator::parent_node.

This commit is contained in:
Ms2ger 2015-07-17 11:41:57 +02:00
parent 4b08cea663
commit c018863201

View file

@ -684,7 +684,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub fn children(&self) -> ThreadSafeLayoutNodeChildrenIterator<'ln> { pub fn children(&self) -> ThreadSafeLayoutNodeChildrenIterator<'ln> {
ThreadSafeLayoutNodeChildrenIterator { ThreadSafeLayoutNodeChildrenIterator {
current_node: self.first_child(), current_node: self.first_child(),
parent_node: Some(self.clone()), parent_node: self.clone(),
} }
} }
@ -990,7 +990,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
pub struct ThreadSafeLayoutNodeChildrenIterator<'a> { pub struct ThreadSafeLayoutNodeChildrenIterator<'a> {
current_node: Option<ThreadSafeLayoutNode<'a>>, current_node: Option<ThreadSafeLayoutNode<'a>>,
parent_node: Option<ThreadSafeLayoutNode<'a>>, parent_node: ThreadSafeLayoutNode<'a>,
} }
impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> { impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> {
@ -1004,9 +1004,7 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> {
return None return None
} }
match self.parent_node { self.current_node = if self.parent_node.pseudo == PseudoElementType::Normal {
Some(ref parent_node) => {
self.current_node = if parent_node.pseudo == PseudoElementType::Normal {
self.current_node.clone().and_then(|node| { self.current_node.clone().and_then(|node| {
unsafe { unsafe {
node.next_sibling() node.next_sibling()
@ -1016,16 +1014,11 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> {
None None
}; };
} }
None => {}
}
}
None => { None => {
match self.parent_node { if self.parent_node.has_after_pseudo() {
Some(ref parent_node) => { let pseudo_after_node = if self.parent_node.pseudo == PseudoElementType::Normal {
if parent_node.has_after_pseudo() { let pseudo = PseudoElementType::After(self.parent_node.get_after_display());
let pseudo_after_node = if parent_node.pseudo == PseudoElementType::Normal { Some(self.parent_node.with_pseudo(pseudo))
let pseudo = PseudoElementType::After(parent_node.get_after_display());
Some(parent_node.with_pseudo(pseudo))
} else { } else {
None None
}; };
@ -1033,9 +1026,6 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> {
return self.current_node.clone() return self.current_node.clone()
} }
} }
None => {}
}
}
} }
node node