aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout/fragment.rs12
-rw-r--r--tests/ref/basic.list1
-rw-r--r--tests/ref/inline_block_with_margin_a.html25
-rw-r--r--tests/ref/inline_block_with_margin_ref.html30
4 files changed, 65 insertions, 3 deletions
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index d423cfc1555..6433ba9cd4b 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -1166,8 +1166,12 @@ impl Fragment {
TableWrapperFragment => {}
InlineBlockFragment(ref mut info) => {
let block_flow = info.flow_ref.get_mut().as_block();
- result.minimum_inline_size = geometry::max(result.minimum_inline_size, block_flow.base.intrinsic_inline_sizes.minimum_inline_size);
- result.preferred_inline_size = geometry::max(result.preferred_inline_size, block_flow.base.intrinsic_inline_sizes.preferred_inline_size);
+ result.minimum_inline_size = geometry::max(result.minimum_inline_size,
+ block_flow.base.intrinsic_inline_sizes.minimum_inline_size +
+ block_flow.base.intrinsic_inline_sizes.surround_inline_size);
+ result.preferred_inline_size = geometry::max(result.preferred_inline_size,
+ block_flow.base.intrinsic_inline_sizes.preferred_inline_size +
+ block_flow.base.intrinsic_inline_sizes.surround_inline_size);
},
ImageFragment(ref mut image_fragment_info) => {
let image_inline_size = image_fragment_info.image_inline_size();
@@ -1421,7 +1425,9 @@ impl Fragment {
match self.specific {
InlineBlockFragment(ref mut info) => {
let block_flow = info.flow_ref.get_mut().as_block();
- self.border_box.size.inline = block_flow.base.intrinsic_inline_sizes.preferred_inline_size + noncontent_inline_size;
+ self.border_box.size.inline = block_flow.base.intrinsic_inline_sizes.preferred_inline_size +
+ block_flow.base.intrinsic_inline_sizes.surround_inline_size +
+ noncontent_inline_size;
block_flow.base.position.size.inline = self.border_box.size.inline;
}
ScannedTextFragment(_) => {
diff --git a/tests/ref/basic.list b/tests/ref/basic.list
index 87ba15eac36..7d9a8631935 100644
--- a/tests/ref/basic.list
+++ b/tests/ref/basic.list
@@ -130,3 +130,4 @@ flaky_gpu,flaky_linux == acid2_noscroll.html acid2_ref_broken.html
== table_containing_block_a.html table_containing_block_ref.html
== link_style_order.html link_style_order_ref.html
== percent_height.html percent_height_ref.html
+== inline_block_with_margin_a.html inline_block_with_margin_ref.html
diff --git a/tests/ref/inline_block_with_margin_a.html b/tests/ref/inline_block_with_margin_a.html
new file mode 100644
index 00000000000..15f94895579
--- /dev/null
+++ b/tests/ref/inline_block_with_margin_a.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style type="text/css">
+ @font-face {
+ font-family: 'ahem';
+ src: url(fonts/ahem/ahem.ttf);
+ }
+ body {
+ margin: 0;
+ font-family: 'ahem';
+ font-size: 100px;
+ line-height: 1;
+ }
+ span {
+ display: inline-block;
+ color: yellow;
+ margin-left: 50px;
+ }
+ </style>
+ </head>
+ <body>
+ <div><span>X X</span></div>
+ </body>
+</html>
diff --git a/tests/ref/inline_block_with_margin_ref.html b/tests/ref/inline_block_with_margin_ref.html
new file mode 100644
index 00000000000..eca34995e51
--- /dev/null
+++ b/tests/ref/inline_block_with_margin_ref.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style type="text/css">
+ body {
+ margin: 0;
+ }
+ .block0 {
+ position: absolute;
+ background-color: yellow;
+ left: 50px;
+ top: 0px;
+ width: 100px;
+ height: 100px;
+ }
+ .block1 {
+ position: absolute;
+ background-color: yellow;
+ left: 250px;
+ top: 0px;
+ width: 100px;
+ height: 100px;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="block0"></div>
+ <div class="block1"></div>
+ </body>
+</html>