Make breadcrumb content scrollable (#22309)

Danilo Leal created

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

Change summary

crates/breadcrumbs/src/breadcrumbs.rs | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)

Detailed changes

crates/breadcrumbs/src/breadcrumbs.rs 🔗

@@ -39,10 +39,17 @@ impl EventEmitter<ToolbarItemEvent> for Breadcrumbs {}
 impl Render for Breadcrumbs {
     fn render(&mut self, cx: &mut ViewContext<Self>) -> 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::<Editor>()
             .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,
                             )