From 034e465d28585822a942b23ade85a2550aa8f816 Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Thu, 17 Apr 2025 17:29:02 +0800 Subject: [PATCH] list: Select first item on search. (#798) --- crates/story/src/list_story.rs | 3 +-- crates/ui/src/list/list.rs | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/story/src/list_story.rs b/crates/story/src/list_story.rs index 752a80d3..b875a640 100644 --- a/crates/story/src/list_story.rs +++ b/crates/story/src/list_story.rs @@ -170,7 +170,6 @@ impl ListDelegate for CompanyListDelegate { .filter(|company| company.name.to_lowercase().contains(&query.to_lowercase())) .cloned() .collect(); - Task::ready(()) } @@ -277,7 +276,7 @@ impl ListStory { let delegate = CompanyListDelegate { matched_companies: companies.clone(), companies, - selected_index: None, + selected_index: Some(0), confirmed_index: None, query: "".to_string(), loading: false, diff --git a/crates/ui/src/list/list.rs b/crates/ui/src/list/list.rs index f03cb95a..7213a00a 100644 --- a/crates/ui/src/list/list.rs +++ b/crates/ui/src/list/list.rs @@ -339,6 +339,12 @@ where self.set_querying(true, window, cx); let search = self.delegate.perform_search(&text, window, cx); + if self.delegate.items_count(cx) > 0 { + self.set_selected_index(Some(0), window, cx); + } else { + self.set_selected_index(None, window, cx); + } + self._search_task = cx.spawn_in(window, async move |this, window| { search.await;