diff --git a/components/layout/block.rs b/components/layout/block.rs index 980bf6b5204..24eac4f48ea 100644 --- a/components/layout/block.rs +++ b/components/layout/block.rs @@ -1313,6 +1313,17 @@ impl BlockFlow { kid_base.fixed_static_i_offset = fixed_static_i_offset; } + // Determine float impaction, and update the inline size speculations if necessary. + if flow::base(kid).flags.contains(CLEARS_LEFT) { + inline_start_floats_impact_child = false; + inline_size_of_preceding_left_floats = Au(0); + } + if flow::base(kid).flags.contains(CLEARS_RIGHT) { + inline_end_floats_impact_child = false; + inline_size_of_preceding_right_floats = Au(0); + } + + // Update the speculated inline size if this child is floated. match flow::base(kid).flags.float_kind() { float::T::none => {} float::T::left => { @@ -1353,16 +1364,6 @@ impl BlockFlow { } } - // Determine float impaction. - if flow::base(kid).flags.contains(CLEARS_LEFT) { - inline_start_floats_impact_child = false; - inline_size_of_preceding_left_floats = Au(0); - } - if flow::base(kid).flags.contains(CLEARS_RIGHT) { - inline_end_floats_impact_child = false; - inline_size_of_preceding_right_floats = Au(0); - } - { let kid_base = flow::mut_base(kid); inline_start_floats_impact_child = inline_start_floats_impact_child || diff --git a/tests/ref/basic.list b/tests/ref/basic.list index fa364d85237..1d814a10e87 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -50,6 +50,7 @@ flaky_cpu == append_style_a.html append_style_b.html == background_style_attr.html background_ref.html == basic_width_px.html basic_width_em.html == block_formatting_context_a.html block_formatting_context_ref.html +== block_formatting_context_cleared_float_a.html block_formatting_context_cleared_float_ref.html == block_formatting_context_complex_a.html block_formatting_context_complex_ref.html == block_formatting_context_containing_floats_a.html block_formatting_context_containing_floats_ref.html == block_formatting_context_relative_a.html block_formatting_context_ref.html diff --git a/tests/ref/block_formatting_context_cleared_float_a.html b/tests/ref/block_formatting_context_cleared_float_a.html new file mode 100644 index 00000000000..495a09cc119 --- /dev/null +++ b/tests/ref/block_formatting_context_cleared_float_a.html @@ -0,0 +1,28 @@ + + + + + + + +
+
+ + + diff --git a/tests/ref/block_formatting_context_cleared_float_ref.html b/tests/ref/block_formatting_context_cleared_float_ref.html new file mode 100644 index 00000000000..88408a8e8d4 --- /dev/null +++ b/tests/ref/block_formatting_context_cleared_float_ref.html @@ -0,0 +1,27 @@ + + + + + + + +
+
+ + +