layout: Translate floats flowing out of blocks to compensate for inline

direction margins.

Improves Reddit /r/rust.
This commit is contained in:
Patrick Walton 2016-04-14 17:41:58 -07:00
parent 97de2c2afa
commit 6b6587a73b
4 changed files with 80 additions and 1 deletions

View file

@ -1020,8 +1020,12 @@ impl BlockFlow {
self.base.position.size.block = cur_b; self.base.position.size.block = cur_b;
} }
// Store the current set of floats in the flow so that flows that come later in the // Translate the current set of floats back into the parent coordinate system in the
// inline direction, and store them in the flow so that flows that come later in the
// document can access them. // document can access them.
floats.translate(LogicalSize::new(writing_mode,
self.fragment.inline_start_offset(),
Au(0)));
self.base.floats = floats.clone(); self.base.floats = floats.clone();
self.adjust_fragments_for_collapsed_margins_if_root(layout_context); self.adjust_fragments_for_collapsed_margins_if_root(layout_context);
} else { } else {

View file

@ -1608,6 +1608,18 @@
"url": "/_mozilla/css/floated_table_with_margin_a.html" "url": "/_mozilla/css/floated_table_with_margin_a.html"
} }
], ],
"css/floats_inline_margins_a.html": [
{
"path": "css/floats_inline_margins_a.html",
"references": [
[
"/_mozilla/css/floats_inline_margins_ref.html",
"=="
]
],
"url": "/_mozilla/css/floats_inline_margins_a.html"
}
],
"css/floats_margin_collapse_a.html": [ "css/floats_margin_collapse_a.html": [
{ {
"path": "css/floats_margin_collapse_a.html", "path": "css/floats_margin_collapse_a.html",
@ -8336,6 +8348,18 @@
"url": "/_mozilla/css/floated_table_with_margin_a.html" "url": "/_mozilla/css/floated_table_with_margin_a.html"
} }
], ],
"css/floats_inline_margins_a.html": [
{
"path": "css/floats_inline_margins_a.html",
"references": [
[
"/_mozilla/css/floats_inline_margins_ref.html",
"=="
]
],
"url": "/_mozilla/css/floats_inline_margins_a.html"
}
],
"css/floats_margin_collapse_a.html": [ "css/floats_margin_collapse_a.html": [
{ {
"path": "css/floats_margin_collapse_a.html", "path": "css/floats_margin_collapse_a.html",

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title></title>
<link rel="match" href="floats_inline_margins_ref.html">
<style>
html, body, p {
margin: 0;
padding: 0;
}
div {
background-color: gold;
float: left;
height: 27px;
width: 27px;
}
#first {
margin-left: 27px;
}
</style>
</head>
<body>
<div></div>
<p id=first>submitted</p>
<p>x</p>
</body>
</html>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title></title>
<style>
html, body, p {
margin: 0;
padding: 0;
}
div {
background-color: gold;
float: left;
height: 27px;
width: 27px;
border-bottom: solid white 27px;
}
</style>
</head>
<body>
<div></div>
<p id=first>submitted</p>
<p>x</p>
</body>
</html>