aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/query.rs
diff options
context:
space:
mode:
authorPermutator <permutatorem@gmail.com>2017-01-06 17:41:34 -0800
committerPermutator <permutatorem@gmail.com>2017-01-13 09:13:25 -0800
commit686d2f85094d89d23227564965df33930958fcb4 (patch)
tree1606ec2a61e1de90fc88df16de20584ab2753e55 /components/layout/query.rs
parent5ef7a0a4d856251a0a621c939c1ecd9c1f881849 (diff)
downloadservo-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.rs11
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),
}
}