From fadf9ff4f45ca0854d6e3e2671ce49efa4a64120 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Fri, 20 Dec 2024 19:50:41 -0300 Subject: [PATCH] Make breadcrumb content scrollable (#22309) Part of https://github.com/zed-industries/zed/issues/5363 https://github.com/user-attachments/assets/66c90cb7-1b36-4436-ad1e-344fbcd4befc Release Notes: - N/A --- crates/breadcrumbs/src/breadcrumbs.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/crates/breadcrumbs/src/breadcrumbs.rs b/crates/breadcrumbs/src/breadcrumbs.rs index 09b29c0436..ba747b7917 100644 --- a/crates/breadcrumbs/src/breadcrumbs.rs +++ b/crates/breadcrumbs/src/breadcrumbs.rs @@ -39,10 +39,17 @@ impl EventEmitter for Breadcrumbs {} impl Render for Breadcrumbs { fn render(&mut self, cx: &mut ViewContext) -> impl IntoElement { const MAX_SEGMENTS: usize = 12; - let element = h_flex().text_ui(cx); + + let element = h_flex() + .id("breadcrumb-container") + .flex_grow() + .overflow_x_scroll() + .text_ui(cx); + let Some(active_item) = self.active_item.as_ref() else { return element; }; + let Some(mut segments) = active_item.breadcrumbs(cx.theme(), cx) else { return element; }; @@ -52,6 +59,7 @@ impl Render for Breadcrumbs { prefix_end_ix, segments.len().saturating_sub(MAX_SEGMENTS / 2), ); + if suffix_start_ix > prefix_end_ix { segments.splice( prefix_end_ix..suffix_start_ix, @@ -82,6 +90,7 @@ impl Render for Breadcrumbs { }); let breadcrumbs_stack = h_flex().gap_1().children(breadcrumbs); + match active_item .downcast::() .map(|editor| editor.downgrade()) @@ -102,14 +111,14 @@ impl Render for Breadcrumbs { if let Some(editor) = editor.upgrade() { let focus_handle = editor.read(cx).focus_handle(cx); Tooltip::for_action_in( - "Show symbol outline", + "Show Symbol Outline", &editor::actions::ToggleOutline, &focus_handle, cx, ) } else { Tooltip::for_action( - "Show symbol outline", + "Show Symbol Outline", &editor::actions::ToggleOutline, cx, )