diff --git a/float-pigment-forest/tests/custom/css_margin.rs b/float-pigment-forest/tests/custom/css_margin.rs
index fc854d7..f94d3e7 100644
--- a/float-pigment-forest/tests/custom/css_margin.rs
+++ b/float-pigment-forest/tests/custom/css_margin.rs
@@ -81,6 +81,19 @@ fn margin_collapse_1() {
)
}
+#[test]
+fn margin_collapse_empty_inline_nodes() {
+ assert_xml!(
+ r#"
+
+ "#
+ )
+}
+
#[test]
fn margin_collapse_negative() {
assert_xml!(
diff --git a/float-pigment-layout/src/algo/flow.rs b/float-pigment-layout/src/algo/flow.rs
index 8d73c89..d86e061 100644
--- a/float-pigment-layout/src/algo/flow.rs
+++ b/float-pigment-layout/src/algo/flow.rs
@@ -674,17 +674,19 @@ impl Flow for LayoutUnit {
request.kind == ComputeRequestKind::Position,
);
- if let Some((prev_collapsed_margin, prev_collapsed_through)) =
- prev_sibling_collapsed_margin
- {
- if !prev_collapsed_through {
- total_main_size += prev_collapsed_margin.solve();
+ if block_size.main_size(axis_info.dir) > T::Length::zero() {
+ if let Some((prev_collapsed_margin, prev_collapsed_through)) =
+ prev_sibling_collapsed_margin
+ {
+ if !prev_collapsed_through {
+ total_main_size += prev_collapsed_margin.solve();
+ }
}
+ prev_sibling_collapsed_margin.replace((CollapsedMargin::zero(), false));
}
let main_offset = padding_border
.main_axis_start(axis_info.dir, axis_info.main_dir_rev)
+ total_main_size;
- prev_sibling_collapsed_margin.replace((CollapsedMargin::zero(), false));
total_main_size += block_size.main_size(axis_info.dir);
max_cross_size = max_cross_size.max(block_size.cross_size(axis_info.dir));
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
new file mode 100644
index 0000000..e2df5b6
--- /dev/null
+++ b/rust-toolchain.toml
@@ -0,0 +1,4 @@
+[toolchain]
+channel = "1.81.0"
+components = [ "rustfmt", "clippy" ]
+profile = "minimal"