From a583d1c6ccfa8ccaf16bc8bf4d13e275150cc50c Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Wed, 9 Aug 2023 01:15:17 +0200 Subject: [PATCH] Do not display match count when query is empty --- crates/search/src/buffer_search.rs | 44 +++++++++++++++++------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/crates/search/src/buffer_search.rs b/crates/search/src/buffer_search.rs index 915ede6cb53366e3d3b349200fe8a0687ac19a33..b9b09523cc527027de79655b24098609aeb63190 100644 --- a/crates/search/src/buffer_search.rs +++ b/crates/search/src/buffer_search.rs @@ -178,6 +178,29 @@ impl View for BufferSearchBar { ) }) }; + let match_count = self + .active_searchable_item + .as_ref() + .and_then(|searchable_item| { + if self.query(cx).is_empty() { + return None; + } + let matches = self + .searchable_items_with_matches + .get(&searchable_item.downgrade())?; + let message = if let Some(match_ix) = self.active_match_index { + format!("{}/{}", match_ix + 1, matches.len()) + } else { + "No matches".to_string() + }; + + Some( + Label::new(message, theme.search.match_index.text.clone()) + .contained() + .with_style(theme.search.match_index.container) + .aligned(), + ) + }); Flex::row() .with_child( Flex::column() @@ -190,25 +213,7 @@ impl View for BufferSearchBar { .with_child(self.render_nav_button(">", Direction::Next, cx)) .aligned(), ) - .with_children(self.active_searchable_item.as_ref().and_then( - |searchable_item| { - let matches = self - .searchable_items_with_matches - .get(&searchable_item.downgrade())?; - let message = if let Some(match_ix) = self.active_match_index { - format!("{}/{}", match_ix + 1, matches.len()) - } else { - "No matches".to_string() - }; - - Some( - Label::new(message, theme.search.match_index.text.clone()) - .contained() - .with_style(theme.search.match_index.container) - .aligned(), - ) - }, - )) + .with_children(match_count) .aligned() .left() .top() @@ -765,6 +770,7 @@ impl BufferSearchBar { self.active_match_index.take(); active_searchable_item.clear_matches(cx); let _ = done_tx.send(()); + cx.notify(); } else { let query = if self.current_mode == SearchMode::Regex { match SearchQuery::regex(