aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app.rs
diff options
context:
space:
mode:
authorlukeflo2024-10-12 21:42:34 +0200
committerlukeflo2024-10-12 22:41:38 +0200
commit7f13ca33714287501b203f37e61514621d9591cd (patch)
tree23d73825a3ede741638736c97d269377151eb462 /src/frontend/app.rs
parent2fa5f8193c2cf3b75f54a37f0f7c4b5ae9d7d665 (diff)
parent3ff98d4d74e1297dd71e1dd36ef49ebe2e5f1f91 (diff)
downloadbibiman-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.rs12
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