From 1c050624823d2aa66d57c845662405d9d44556f6 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Mon, 30 Jun 2025 10:32:27 -0300 Subject: [PATCH] agent: Always focus on to the active model in the picker (#33567) Release Notes: - agent: Improved the model selector by ensuring the active model is always focused on open. --- crates/agent_ui/src/language_model_selector.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/crates/agent_ui/src/language_model_selector.rs b/crates/agent_ui/src/language_model_selector.rs index d9d11231edbe128fcfd9a486278ed8e1542b4397..55c0974fc1d2bdbd65e0b6d746abf7f4ef10654d 100644 --- a/crates/agent_ui/src/language_model_selector.rs +++ b/crates/agent_ui/src/language_model_selector.rs @@ -399,7 +399,7 @@ impl PickerDelegate for LanguageModelPickerDelegate { cx: &mut Context>, ) -> Task<()> { let all_models = self.all_models.clone(); - let current_index = self.selected_index; + let active_model = (self.get_active_model)(cx); let bg_executor = cx.background_executor(); let language_model_registry = LanguageModelRegistry::global(cx); @@ -441,12 +441,9 @@ impl PickerDelegate for LanguageModelPickerDelegate { cx.spawn_in(window, async move |this, cx| { this.update_in(cx, |this, window, cx| { this.delegate.filtered_entries = filtered_models.entries(); - // Preserve selection focus - let new_index = if current_index >= this.delegate.filtered_entries.len() { - 0 - } else { - current_index - }; + // Finds the currently selected model in the list + let new_index = + Self::get_active_model_index(&this.delegate.filtered_entries, active_model); this.set_selected_index(new_index, Some(picker::Direction::Down), true, window, cx); cx.notify(); })