From f2b0c5e08d7433d5a1780fee827da0f29c5bc136 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sat, 18 Mar 2023 16:28:39 +0100 Subject: [PATCH] Fix page counter --- library/src/meta/counter.rs | 12 ++++++------ tests/ref/meta/counter-page.png | Bin 9723 -> 14766 bytes tests/typ/meta/counter-page.typ | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/library/src/meta/counter.rs b/library/src/meta/counter.rs index b61e89133..27fd548fb 100644 --- a/library/src/meta/counter.rs +++ b/library/src/meta/counter.rs @@ -277,8 +277,8 @@ impl Counter { if is_page { let page = introspector.page(id); let delta = page.get() - prev_page.get(); - if let Some(delta) = NonZeroUsize::new(delta) { - state.step(delta); + if delta > 0 { + state.step(NonZeroUsize::ONE, delta); } prev_page = page; } @@ -354,7 +354,7 @@ impl CounterState { pub fn update(&mut self, vt: &mut Vt, update: CounterUpdate) -> SourceResult<()> { match update { CounterUpdate::Set(state) => *self = state, - CounterUpdate::Step(level) => self.step(level), + CounterUpdate::Step(level) => self.step(level, 1), CounterUpdate::Func(func) => { *self = func .call_vt(vt, self.0.iter().copied().map(Into::into))? @@ -365,12 +365,12 @@ impl CounterState { Ok(()) } - /// Advance the top level number by the specified amount. - pub fn step(&mut self, level: NonZeroUsize) { + /// Advance the number of the given level by the specified amount. + pub fn step(&mut self, level: NonZeroUsize, by: usize) { let level = level.get(); if self.0.len() >= level { - self.0[level - 1] = self.0[level - 1].saturating_add(1); + self.0[level - 1] = self.0[level - 1].saturating_add(by); self.0.truncate(level); } diff --git a/tests/ref/meta/counter-page.png b/tests/ref/meta/counter-page.png index 62f663cc240cfee3f01bd10c8e432d26209e5e6a..869718bcaaf5130ee12525474f717eb99c48b626 100644 GIT binary patch literal 14766 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