diff options
| author | lukeflo | 2024-10-12 21:42:34 +0200 |
|---|---|---|
| committer | lukeflo | 2024-10-12 22:41:38 +0200 |
| commit | 7f13ca33714287501b203f37e61514621d9591cd (patch) | |
| tree | 23d73825a3ede741638736c97d269377151eb462 /src/frontend/app.rs | |
| parent | 2fa5f8193c2cf3b75f54a37f0f7c4b5ae9d7d665 (diff) | |
| parent | 3ff98d4d74e1297dd71e1dd36ef49ebe2e5f1f91 (diff) | |
| download | bibiman-7f13ca33714287501b203f37e61514621d9591cd.tar.gz bibiman-7f13ca33714287501b203f37e61514621d9591cd.zip | |
Merge branch 'enhance-nested-search'
Completely reworked the search mechanism:
- Always take the current entry table as reference
- No need for many intermediate snapshots of different lists/tables
- Only single snapshot of current entry table when entering search, so deleting of chars will reshow entries
Diffstat (limited to 'src/frontend/app.rs')
| -rw-r--r-- | src/frontend/app.rs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/frontend/app.rs b/src/frontend/app.rs index ee2ab05..31383c7 100644 --- a/src/frontend/app.rs +++ b/src/frontend/app.rs @@ -161,7 +161,7 @@ impl App { if let CurrentArea::TagArea = self.current_area { self.tag_list.tag_list_state.select(Some(0)) } - self.search_struct.filtered_entry_list.clear(); + self.entry_table.entry_table_at_search_start.clear(); self.search_struct.filtered_tag_list.clear(); self.search_struct.inner_search = false; self.former_area = None @@ -175,7 +175,6 @@ impl App { } pub fn scroll_info_down(&mut self) { - // self.entry_table.entry_info_scroll = self.entry_table.entry_info_scroll + 1; self.entry_table.entry_info_scroll = self.entry_table.entry_info_scroll.saturating_add(1); self.entry_table.entry_info_scroll_state = self .entry_table @@ -184,11 +183,6 @@ impl App { } pub fn scroll_info_up(&mut self) { - // if self.entry_table.entry_info_scroll == 0 { - // {} - // } else { - // self.entry_table.entry_info_scroll = self.entry_table.entry_info_scroll - 1; - // } self.entry_table.entry_info_scroll = self.entry_table.entry_info_scroll.saturating_sub(1); self.entry_table.entry_info_scroll_state = self .entry_table @@ -204,6 +198,8 @@ impl App { if let Some(FormerArea::TagArea) = self.former_area { self.search_struct.inner_search = true } + self.entry_table.entry_table_at_search_start = + self.entry_table.entry_table_items.clone(); self.former_area = Some(FormerArea::EntryArea) } else if let CurrentArea::TagArea = self.current_area { self.former_area = Some(FormerArea::TagArea) @@ -221,6 +217,7 @@ impl App { } self.former_area = Some(FormerArea::SearchArea); self.search_struct.search_string.clear(); + self.entry_table.entry_table_at_search_start.clear(); } // Break search: leave search area without filtering list @@ -238,6 +235,7 @@ impl App { self.former_area = None; // If search is canceled, reset default status of struct self.search_struct.search_string.clear(); + self.entry_table.entry_table_at_search_start.clear(); } // Remove last char from search pattern and filter list immidiately |
