diff options
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 36 |
1 files changed, 11 insertions, 25 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 99648369357..748b7b8249e 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1166,34 +1166,20 @@ impl Iterator for PrecedingNodeIterator { Some(current) => current, }; - if self.root == current { - self.current = None; - return None - } - - let node = current; - if let Some(previous_sibling) = node.GetPreviousSibling() { + self.current = if self.root == current { + None + } else if let Some(previous_sibling) = current.GetPreviousSibling() { if self.root == previous_sibling { - self.current = None; - return None - } - - if let Some(last_child) = previous_sibling.descending_last_children().last() { - self.current = Some(last_child); - return previous_sibling.descending_last_children().last() + None + } else if let Some(last_child) = previous_sibling.descending_last_children().last() { + Some(last_child) + } else { + Some(previous_sibling) } - - self.current = Some(previous_sibling); - return node.GetPreviousSibling() + } else { + current.GetParentNode() }; - - if let Some(parent_node) = node.GetParentNode() { - self.current = Some(parent_node); - return node.GetParentNode() - } - - self.current = None; - None + self.current.clone() } } |