use super::MatchListState;
use crate::incremental::ExtendIncremental;
#[inline]
pub fn items(
previous: MatchListState,
padding_top: u16,
mut sizes_below_incl: impl ExtendIncremental,
mut sizes_above: impl ExtendIncremental,
) {
let mut total_remaining = previous.size;
total_remaining -= sizes_below_incl.extend_bounded(total_remaining - padding_top, 1);
total_remaining -=
sizes_below_incl.extend_unbounded(total_remaining.saturating_sub(previous.above));
sizes_above.extend_unbounded(total_remaining);
}
#[inline]
pub fn items_rev(
previous: MatchListState,
padding_top: u16,
mut sizes_below_incl: impl ExtendIncremental,
mut sizes_above: impl ExtendIncremental,
) {
let mut total_remaining = previous.size;
let selection_size = sizes_below_incl.extend_bounded(total_remaining - padding_top, 1);
total_remaining -= sizes_above
.extend_unbounded(total_remaining.saturating_sub(previous.below.max(selection_size)));
total_remaining -= selection_size;
sizes_below_incl.extend_unbounded(total_remaining);
}