aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/sequential.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2014-10-29 19:02:31 -0700
committerMartin Robinson <mrobinson@igalia.com>2014-11-03 10:30:28 -0800
commit2d72f00ccf8abfd5805dccdca5a635fa4e8e0cb8 (patch)
treeb49ad076db1f72b40102aaaa99683775749d883f /components/layout/sequential.rs
parent1a3ff8739c2a17d61f295f213f31ddee25e0b3ae (diff)
downloadservo-2d72f00ccf8abfd5805dccdca5a635fa4e8e0cb8.tar.gz
servo-2d72f00ccf8abfd5805dccdca5a635fa4e8e0cb8.zip
Have ContentBox(es)Queries consult the flow tree
Instead of looking at the display tree, have ContentBox(es)Query consult the flow tree. This allow optimizing away parts of the display tree later. To do this we need to be more careful about how we send reflow requests, only querying the flow tree when possible. Fixes #3790.
Diffstat (limited to 'components/layout/sequential.rs')
-rw-r--r--components/layout/sequential.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/components/layout/sequential.rs b/components/layout/sequential.rs
index 57afc925918..4636fa9c3eb 100644
--- a/components/layout/sequential.rs
+++ b/components/layout/sequential.rs
@@ -8,6 +8,7 @@ use context::{LayoutContext, SharedLayoutContext};
use flow::{Flow, MutableFlowUtils, PreorderFlowTraversal, PostorderFlowTraversal};
use flow;
use flow_ref::FlowRef;
+use fragment::FragmentBoundsIterator;
use servo_util::opts;
use traversal::{BubbleISizes, RecalcStyleForNode, ConstructFlows};
use traversal::{AssignBSizesAndStoreOverflow, AssignISizes};
@@ -92,3 +93,16 @@ pub fn build_display_list_for_subtree(root: &mut FlowRef,
doit(root.deref_mut(), compute_absolute_positions, build_display_list);
}
+
+pub fn iterate_through_flow_tree_fragment_bounds(root: &mut FlowRef,
+ iterator: &mut FragmentBoundsIterator) {
+ fn doit(flow: &mut Flow, iterator: &mut FragmentBoundsIterator) {
+ flow.iterate_through_fragment_bounds(iterator);
+
+ for kid in flow::mut_base(flow).child_iter() {
+ doit(kid, iterator);
+ }
+ }
+
+ doit(root.deref_mut(), iterator);
+}