From 2983a94911b4ba76891ae3beaefcb5033bfc6ddd Mon Sep 17 00:00:00 2001 From: lukeflo Date: Thu, 17 Oct 2024 14:01:34 +0200 Subject: make scrollbars adapt to lists filtered by search --- src/frontend/keywords.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/frontend/keywords.rs') diff --git a/src/frontend/keywords.rs b/src/frontend/keywords.rs index 9432752..98c4222 100644 --- a/src/frontend/keywords.rs +++ b/src/frontend/keywords.rs @@ -118,6 +118,10 @@ impl App { let filtered_list = BibiSearch::search_tag_list(&self.search_struct.search_string, orig_list.clone()); self.tag_list.tag_list_items = filtered_list; + self.tag_list.tag_scroll_state = ScrollbarState::content_length( + self.tag_list.tag_scroll_state, + self.tag_list.tag_list_items.len(), + ); // self.tag_list = TagList::from_iter(filtered_list) } @@ -143,6 +147,10 @@ impl App { self.search_struct.filtered_tag_list = filtered_keywords.clone(); self.tag_list.tag_list_items = filtered_keywords; + self.tag_list.tag_scroll_state = ScrollbarState::content_length( + self.tag_list.tag_scroll_state, + self.tag_list.tag_list_items.len(), + ); } // Filter the entry list by tags when hitting enter @@ -154,6 +162,11 @@ impl App { let filtered_list = BibiSearch::filter_entries_by_tag(&keyword, &orig_list); self.tag_list.selected_keyword = keyword.to_string(); self.entry_table.entry_table_items = filtered_list; + // Update scrollbar state with new lenght of itemlist + self.entry_table.entry_scroll_state = ScrollbarState::content_length( + self.entry_table.entry_scroll_state, + self.entry_table.entry_table_items.len(), + ); self.filter_tags_by_entries(); self.toggle_area(); self.entry_table.entry_table_state.select(Some(0)); -- cgit v1.2.3 From 5abdd1822a1d388feb36b0d4e62316b4671bf406 Mon Sep 17 00:00:00 2001 From: lukeflo Date: Thu, 17 Oct 2024 14:04:19 +0200 Subject: Delete old code --- src/frontend/keywords.rs | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) (limited to 'src/frontend/keywords.rs') diff --git a/src/frontend/keywords.rs b/src/frontend/keywords.rs index 98c4222..ba74b02 100644 --- a/src/frontend/keywords.rs +++ b/src/frontend/keywords.rs @@ -42,23 +42,6 @@ impl TagListItem { } } -// impl FromIterator for TagList { -// fn from_iter>(iter: I) -> Self { -// let tag_list_items: Vec = iter -// .into_iter() -// .map(|info| TagListItem::new(&info)) -// .collect(); -// let tag_list_state = ListState::default(); // for preselection: .with_selected(Some(0)); -// let tag_scroll_state = ScrollbarState::new(tag_list_items.len()); -// Self { -// tag_list_items, -// tag_list_state, -// tag_scroll_state, -// selected_keyword: String::new(), -// } -// } -// } - impl TagList { pub fn new(keyword_list: Vec) -> Self { let tag_list_items = keyword_list; @@ -118,11 +101,11 @@ impl App { let filtered_list = BibiSearch::search_tag_list(&self.search_struct.search_string, orig_list.clone()); self.tag_list.tag_list_items = filtered_list; + // Update scrollbar length after filtering list self.tag_list.tag_scroll_state = ScrollbarState::content_length( self.tag_list.tag_scroll_state, self.tag_list.tag_list_items.len(), ); - // self.tag_list = TagList::from_iter(filtered_list) } pub fn filter_tags_by_entries(&mut self) { -- cgit v1.2.3