From 8e32153e34b63734de66bd0e5711f414f1621764 Mon Sep 17 00:00:00 2001 From: Kitsu Date: Sat, 18 Oct 2025 08:23:59 -0300 Subject: [PATCH] Show missing subitems --- src/draw.rs | 4 ++-- src/state.rs | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/draw.rs b/src/draw.rs index 057c2b2..2d1b871 100644 --- a/src/draw.rs +++ b/src/draw.rs @@ -54,7 +54,7 @@ impl<'a> Drawables<'a> { self.state.processed_entries(), self.state.skip_offset(), self.state.selected_item(), - self.state.has_subitems(), + self.state.selected_has_subitems(), self.tx.take().unwrap(), &self.list_config, ), @@ -84,7 +84,7 @@ pub fn make_drawables<'c: 'it, 's: 'it, 'it>( let list_space = list_config.space_for_entries( state.processed_entries().len().max(1), scale, - state.has_subitems(), + state.selected_has_subitems(), ); Some(Space { width: 0., diff --git a/src/state.rs b/src/state.rs index 94e3bdc..db40a88 100644 --- a/src/state.rs +++ b/src/state.rs @@ -48,6 +48,7 @@ impl InputBuffer { pub struct State { input_buffer: InputBuffer, skip_offset: usize, + // index without considering filtering selected_item: usize, selected_subitem: usize, filtered_lines: FilteredLines, @@ -146,9 +147,11 @@ impl State { self.selected_item } - pub fn has_subitems(&self) -> bool { - // For now either all items has subname or none. - self.inner.subentries_len(self.selected_item) > 0 + pub fn selected_has_subitems(&self) -> bool { + self.filtered_lines + .index(self.selected_item) + .map(|idx| self.inner.subentries_len(idx)) + .is_some_and(|count| count > 0) } pub fn processed_entries(&self) -> impl ExactSizeIterator> {