From 5a05986479d39fc179b38bb4f7d69f5cce7ce422 Mon Sep 17 00:00:00 2001 From: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Date: Thu, 23 Oct 2025 03:37:37 -0400 Subject: [PATCH] debugger: Fix debug scenario picker not showing language subtitles (#40977) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Before Screenshot 2025-10-23 at 2 58 44 AM ### After Screenshot 2025-10-23 at 3 08 59 AM I also changed the debug picker to use a material list to cover the edge case where there isn't a subtitle for an entry Release Notes: - debugger: Fix debug scenario picker not showing language subtitles --- crates/debugger_ui/src/new_process_modal.rs | 6 ++++-- crates/picker/src/picker.rs | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/crates/debugger_ui/src/new_process_modal.rs b/crates/debugger_ui/src/new_process_modal.rs index cf3c779abad2073892a45acb4616298ef85af043..e12c768e12b1e098e150027c89d05695c59c51f6 100644 --- a/crates/debugger_ui/src/new_process_modal.rs +++ b/crates/debugger_ui/src/new_process_modal.rs @@ -96,7 +96,9 @@ impl NewProcessModal { let debug_picker = cx.new(|cx| { let delegate = DebugDelegate::new(debug_panel.downgrade(), task_store.clone()); - Picker::uniform_list(delegate, window, cx).modal(false) + Picker::list(delegate, window, cx) + .modal(false) + .list_measure_all() }); let configure_mode = ConfigureMode::new(window, cx); @@ -1050,7 +1052,7 @@ impl DebugDelegate { Some(TaskSourceKind::Lsp { language_name, .. }) => { Some(format!("LSP: {language_name}")) } - Some(TaskSourceKind::Language { .. }) => None, + Some(TaskSourceKind::Language { name }) => Some(format!("Lang: {name}")), _ => context.clone().and_then(|ctx| { ctx.task_context .task_variables diff --git a/crates/picker/src/picker.rs b/crates/picker/src/picker.rs index 247fcbdd875ffc2e52d90d9b1309f874c508e588..90423bcace0ad405e0c88703efe09f39a8763778 100644 --- a/crates/picker/src/picker.rs +++ b/crates/picker/src/picker.rs @@ -352,6 +352,16 @@ impl Picker { self } + pub fn list_measure_all(mut self) -> Self { + match self.element_container { + ElementContainer::List(state) => { + self.element_container = ElementContainer::List(state.measure_all()); + } + _ => {} + } + self + } + pub fn focus(&self, window: &mut Window, cx: &mut App) { self.focus_handle(cx).focus(window); }