From a2316a9cac270790920a1ebd1be6532d51aba77c Mon Sep 17 00:00:00 2001 From: Jack Wills <32690432+mrjackwills@users.noreply.github.com> Date: Sat, 20 Sep 2025 22:15:43 +0000 Subject: [PATCH] refactor: log search scroll --- src/app_data/container_state.rs | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/app_data/container_state.rs b/src/app_data/container_state.rs index aa6961c..00a88d7 100644 --- a/src/app_data/container_state.rs +++ b/src/app_data/container_state.rs @@ -741,7 +741,7 @@ impl Logs { } /// Search through the logs for a matching string - pub fn search(&mut self, case_sensitive: bool) { + pub fn search(&mut self, case_sensitive: bool, scroll: bool) { if let Some(search_term) = self.search_term.as_ref() { let term = if case_sensitive { search_term.to_owned() @@ -768,17 +768,9 @@ impl Logs { .then_some(index) }) .collect(); - - if !self.search_results.is_empty() { - if let Some(currently_selected) = self.lines.state.selected() - && !self.search_results.contains(¤tly_selected) - { - self.lines.state.select(self.search_results.last().copied()); - self.offset = 0; - } else { - self.lines.state.select(self.search_results.last().copied()); - self.offset = 0; - } + if !self.search_results.is_empty() && scroll { + self.lines.state.select(self.search_results.last().copied()); + self.offset = 0; } } else { self.search_results.clear(); @@ -792,7 +784,7 @@ impl Logs { } else { self.search_term = Some(format!("{c}")); } - self.search(case_sensitive); + self.search(case_sensitive, true); } /// Delete the final char of the filter term @@ -803,7 +795,7 @@ impl Logs { self.search_term = None; } } - self.search(case_sensitive); + self.search(case_sensitive, true); } /// Remove the filter completely @@ -819,7 +811,7 @@ impl Logs { self.lines.items.push(line); // Maybe - Ideally we'd re-render here if self.search_term.is_some() { - self.search(case_sensitive); + self.search(case_sensitive, false); } } }