use different disambiguators when skipping region

This commit is contained in:
PgBiel 2025-04-07 22:38:03 -03:00
parent ce41113d9c
commit 3361b3714d

View File

@ -202,7 +202,7 @@ impl<'a> GridLayouter<'a> {
) -> SourceResult<()> {
// Generate different locations for content in headers across its
// repetitions by assigning a unique number for each one.
let disambiguator = self.finished.len();
let mut disambiguator = self.finished.len();
// At first, only consider the height of the given headers. However,
// for upcoming regions, we will have to consider repeating headers as
@ -254,18 +254,21 @@ impl<'a> GridLayouter<'a> {
// if 'full'changes? (Assuming height doesn't change for now...)
if !skipped_region {
if let HeadersToLayout::NewHeaders { headers, .. } = headers {
// Update disambiguator as we are re-measuring headers
// which were already laid out.
disambiguator = self.finished.len();
header_height =
// Laying out new headers, so we have to consider the
// combined height of already repeating headers as well
// when beginning a new region.
self.simulate_header_height(
self.repeating_headers
.iter().copied()
.chain(self.pending_headers.iter().chain(headers).map(Repeatable::unwrap)),
&self.regions,
engine,
disambiguator,
)?;
// Laying out new headers, so we have to consider the
// combined height of already repeating headers as well
// when beginning a new region.
self.simulate_header_height(
self.repeating_headers
.iter().copied()
.chain(self.pending_headers.iter().chain(headers).map(Repeatable::unwrap)),
&self.regions,
engine,
disambiguator,
)?;
}
}