From ba531c371e61e34607bb1e3aa911e2529dac7b35 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Tue, 27 Feb 2024 14:05:29 +0100 Subject: [PATCH] Fix float overlap (#3507) --- crates/typst/src/layout/flow.rs | 6 +++--- tests/ref/bugs/2595-float-overlap.png | Bin 0 -> 15654 bytes tests/ref/bugs/2715-float-order.png | Bin 12944 -> 13006 bytes tests/typ/bugs/2595-float-overlap.typ | 13 +++++++++++++ tests/typ/bugs/2715-float-order.typ | 2 +- 5 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 tests/ref/bugs/2595-float-overlap.png create mode 100644 tests/typ/bugs/2595-float-overlap.typ diff --git a/crates/typst/src/layout/flow.rs b/crates/typst/src/layout/flow.rs index 8701d35d9..662cf6804 100644 --- a/crates/typst/src/layout/flow.rs +++ b/crates/typst/src/layout/flow.rs @@ -253,7 +253,7 @@ impl<'a> FlowLayouter<'a> { } if let Some(first) = lines.first() { - if !self.regions.size.y.fits(first.height()) && !self.regions.in_last() { + while !self.regions.size.y.fits(first.height()) && !self.regions.in_last() { let carry: Vec<_> = self.items.drain(sticky..).collect(); self.finish_region(engine, false)?; for item in carry { @@ -400,7 +400,7 @@ impl<'a> FlowLayouter<'a> { FlowItem::Fractional(_) => {} FlowItem::Frame { ref frame, movable, .. } => { let height = frame.height(); - if !self.regions.size.y.fits(height) && !self.regions.in_last() { + while !self.regions.size.y.fits(height) && !self.regions.in_last() { self.finish_region(engine, false)?; } @@ -613,7 +613,7 @@ impl<'a> FlowLayouter<'a> { self.initial = self.regions.size; self.has_footnotes = false; - // Try to place floats. + // Try to place floats into the next region. for item in std::mem::take(&mut self.pending_floats) { self.layout_item(engine, item)?; } diff --git a/tests/ref/bugs/2595-float-overlap.png b/tests/ref/bugs/2595-float-overlap.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8eaf94152fe50d7186f76f0bffc96b30d53c5c GIT binary patch literal 15654 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 U0I6C3au-=fQc>ck7$o3-0f9%%!vFvP literal 0 HcmV?d00001 diff --git a/tests/ref/bugs/2715-float-order.png b/tests/ref/bugs/2715-float-order.png index 76e6db9e6d36544023dd7f091eae5486f2245b97..0a4f8812eb10abdf5de276ff4d47605ba0d30d55 100644 GIT binary patch delta 5511 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