diff options
author | Permutator <permutatorem@gmail.com> | 2017-01-06 17:41:34 -0800 |
---|---|---|
committer | Permutator <permutatorem@gmail.com> | 2017-01-13 09:13:25 -0800 |
commit | 686d2f85094d89d23227564965df33930958fcb4 (patch) | |
tree | 1606ec2a61e1de90fc88df16de20584ab2753e55 /components/layout/query.rs | |
parent | 5ef7a0a4d856251a0a621c939c1ecd9c1f881849 (diff) | |
download | servo-686d2f85094d89d23227564965df33930958fcb4.tar.gz servo-686d2f85094d89d23227564965df33930958fcb4.zip |
Don't use rposition() and unwrap() to find parent info
Diffstat (limited to 'components/layout/query.rs')
-rw-r--r-- | components/layout/query.rs | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/components/layout/query.rs b/components/layout/query.rs index f604c561152..aaf59b47d4b 100644 --- a/components/layout/query.rs +++ b/components/layout/query.rs @@ -861,14 +861,13 @@ pub fn process_offset_parent_query<N: LayoutNode>(requested_node: N, layout_root sequential::iterate_through_flow_tree_fragment_border_boxes(layout_root, &mut iterator); let node_offset_box = iterator.node_offset_box; - let parent_info_index = iterator.parent_nodes.iter().rposition(|info| info.is_some()); - match (node_offset_box, parent_info_index) { - (Some(node_offset_box), Some(parent_info_index)) => { - let parent = iterator.parent_nodes[parent_info_index].as_ref().unwrap(); - let origin = node_offset_box.offset - parent.origin; + let parent_info = iterator.parent_nodes.into_iter().rev().filter_map(|info| info).next(); + match (node_offset_box, parent_info) { + (Some(node_offset_box), Some(parent_info)) => { + let origin = node_offset_box.offset - parent_info.origin; let size = node_offset_box.rectangle.size; OffsetParentResponse { - node_address: Some(parent.node_address.to_untrusted_node_address()), + node_address: Some(parent_info.node_address.to_untrusted_node_address()), rect: Rect::new(origin, size), } } |