aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/construct.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-08-10 21:02:30 -0500
committerGitHub <noreply@github.com>2016-08-10 21:02:30 -0500
commit1b2450339c40dbcb65e94a346ea434d45f0edf90 (patch)
tree5678ca02c5ed91097d523ab523c623bf6fef3408 /components/layout/construct.rs
parent3c7de6b82165d251e37f699d8f724fba0a0f4556 (diff)
parent9b8eac000f86badbd0224d1cb5b183c091fe7c1b (diff)
downloadservo-1b2450339c40dbcb65e94a346ea434d45f0edf90.tar.gz
servo-1b2450339c40dbcb65e94a346ea434d45f0edf90.zip
Auto merge of #12757 - emilio:stylo, r=bholley,pcwalton
stylo: Stop restyling display: none elements, remove the has_changed hack that made us use ReconstructFrame unconditionally. <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> r? @bholley <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12757) <!-- Reviewable:end -->
Diffstat (limited to 'components/layout/construct.rs')
-rw-r--r--components/layout/construct.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs
index 809ecaa406a..33b88f6b8c0 100644
--- a/components/layout/construct.rs
+++ b/components/layout/construct.rs
@@ -1374,12 +1374,20 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
// We visit the kids first and reset their HAS_NEWLY_CONSTRUCTED_FLOW flags after checking
// them. NOTE: Make sure not to bail out early before resetting all the flags!
let mut need_to_reconstruct = false;
+
+ // If the node has display: none, it's possible that we haven't even
+ // styled the children once, so we need to bailout early here.
+ if node.style(self.style_context()).get_box().clone_display() == display::T::none {
+ return false;
+ }
+
for kid in node.children() {
if kid.flags().contains(HAS_NEWLY_CONSTRUCTED_FLOW) {
kid.remove_flags(HAS_NEWLY_CONSTRUCTED_FLOW);
need_to_reconstruct = true
}
}
+
if need_to_reconstruct {
return false
}