diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2016-09-19 13:30:48 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2016-09-19 17:17:08 -0700 |
commit | c6b9b315aa01399b2f6cb7e0815cfe71fa7b4258 (patch) | |
tree | c6cd19700c6dee1cd61cfe647a2ac18138fbefc5 | |
parent | dc3e11f96e8df0c6faf5f0a173b98e35b8791c89 (diff) | |
download | servo-c6b9b315aa01399b2f6cb7e0815cfe71fa7b4258.tar.gz servo-c6b9b315aa01399b2f6cb7e0815cfe71fa7b4258.zip |
layout: Make `baseline_offset_of_last_line_box_in_flow()` only check
blocks in flow.
Improves python.org.
Closes #12124.
4 files changed, 95 insertions, 1 deletions
diff --git a/components/layout/flow.rs b/components/layout/flow.rs index 2476e2431da..36b8da6cc48 100644 --- a/components/layout/flow.rs +++ b/components/layout/flow.rs @@ -1405,7 +1405,8 @@ impl<'a> ImmutableFlowUtils for &'a Flow { return kid.as_inline().baseline_offset_of_last_line() } if kid.is_block_like() && - kid.as_block().formatting_context_type() == FormattingContextType::None { + kid.as_block().formatting_context_type() == FormattingContextType::None && + !base(kid).flags.contains(IS_ABSOLUTELY_POSITIONED) { if let Some(baseline_offset) = kid.baseline_offset_of_last_line_box_in_flow() { return Some(base(kid).position.start.b + baseline_offset) } diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index debeee40193..9f56db24baa 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -2484,6 +2484,18 @@ "url": "/_mozilla/css/inline_block_border_intrinsic_size_a.html" } ], + "css/inline_block_height_with_out_of_flow_child_a.html": [ + { + "path": "css/inline_block_height_with_out_of_flow_child_a.html", + "references": [ + [ + "/_mozilla/css/inline_block_height_with_out_of_flow_child_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/inline_block_height_with_out_of_flow_child_a.html" + } + ], "css/inline_block_img_a.html": [ { "path": "css/inline_block_img_a.html", @@ -11908,6 +11920,18 @@ "url": "/_mozilla/css/inline_block_border_intrinsic_size_a.html" } ], + "css/inline_block_height_with_out_of_flow_child_a.html": [ + { + "path": "css/inline_block_height_with_out_of_flow_child_a.html", + "references": [ + [ + "/_mozilla/css/inline_block_height_with_out_of_flow_child_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/inline_block_height_with_out_of_flow_child_a.html" + } + ], "css/inline_block_img_a.html": [ { "path": "css/inline_block_img_a.html", diff --git a/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html new file mode 100644 index 00000000000..5aab3a8d04d --- /dev/null +++ b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_a.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> +<link rel="match" href="inline_block_height_with_out_of_flow_child_ref.html"> +<style> + .options-bar { + background-color: lightblue; + color: white; + } + + .winkwink-nudgenudge { + display: inline-block; + } + + .tier-1 { + position: relative; + } + + .subnav { + position: absolute; + top: 100px; + } +</style> +</head> +<body> +<div class="options-bar"> + <div class="winkwink-nudgenudge"> + <div class="tier-1"> + <div class="subnav">A</div> + </div> + </div> +</div> +</body> +</html> + diff --git a/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html new file mode 100644 index 00000000000..64603f8c979 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/inline_block_height_with_out_of_flow_child_ref.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> +<head> +<style> + .options-bar { + background-color: lightblue; + color: white; + } + + .winkwink-nudgenudge { + display: inline-block; + } + + .tier-1 { + position: relative; + } + + .subnav { + position: absolute; + top: 100px; + } +</style> +</head> +<body> +<div class="options-bar"> + <div class="winkwink-nudgenudge"> + <div class="tier-1"> + </div> + </div> +</div> +</body> +</html> + + |