summaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2024-02-27 14:05:29 +0100
committerGitHub <noreply@github.com>2024-02-27 13:05:29 +0000
commitba531c371e61e34607bb1e3aa911e2529dac7b35 (patch)
treebb7bbb3951f4b90835445a0ba625b148445ffd8f /crates
parentae31640c0a62d26b7f2a7a38579293ae48c7c7b7 (diff)
Fix float overlap (#3507)
Diffstat (limited to 'crates')
-rw-r--r--crates/typst/src/layout/flow.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/crates/typst/src/layout/flow.rs b/crates/typst/src/layout/flow.rs
index 8701d35d..662cf680 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)?;
}