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, )