Remove reference to pane from a toolbar.

Piotr Osiewicz and Kyle created

Co-authored-by: Kyle <kyle@zed.dev>

Change summary

assets/keymaps/default.json        |  2 
crates/ai/src/assistant.rs         |  2 
crates/workspace/src/pane.rs       |  2 
crates/workspace/src/toolbar.rs    | 56 -------------------------------
styles/src/style_tree/tab_bar.ts   |  2 
styles/src/style_tree/workspace.ts | 17 ---------
6 files changed, 5 insertions(+), 76 deletions(-)

Detailed changes

assets/keymaps/default.json 🔗

@@ -238,7 +238,7 @@
     "context": "ProjectSearchBar",
     "bindings": {
       "escape": "project_search::ToggleFocus",
-      "alt-tab": "project_search::CycleMode",
+      "alt-tab": "project_search::CycleMode"
     }
   },
   {

crates/ai/src/assistant.rs 🔗

@@ -158,7 +158,7 @@ impl AssistantPanel {
                     });
 
                     let toolbar = cx.add_view(|cx| {
-                        let mut toolbar = Toolbar::new(None);
+                        let mut toolbar = Toolbar::new();
                         toolbar.set_can_navigate(false, cx);
                         toolbar.add_item(cx.add_view(|cx| BufferSearchBar::new(cx)), cx);
                         toolbar

crates/workspace/src/pane.rs 🔗

@@ -308,7 +308,7 @@ impl Pane {
                 pane: handle.clone(),
                 next_timestamp,
             }))),
-            toolbar: cx.add_view(|_| Toolbar::new(Some(handle))),
+            toolbar: cx.add_view(|_| Toolbar::new()),
             tab_bar_context_menu: TabBarContextMenu {
                 kind: TabBarContextMenuKind::New,
                 handle: context_menu,

crates/workspace/src/toolbar.rs 🔗

@@ -54,7 +54,6 @@ pub struct Toolbar {
     active_item: Option<Box<dyn ItemHandle>>,
     hidden: bool,
     can_navigate: bool,
-    pane: Option<WeakViewHandle<Pane>>,
     items: Vec<(Box<dyn ToolbarItemViewHandle>, ToolbarItemLocation)>,
 }
 
@@ -144,63 +143,10 @@ impl View for Toolbar {
     }
 }
 
-#[allow(clippy::too_many_arguments)]
-fn nav_button<A: Action, F: 'static + Fn(&mut Toolbar, &mut ViewContext<Toolbar>)>(
-    svg_path: &'static str,
-    style: theme::Interactive<theme::IconButton>,
-    nav_button_height: f32,
-    tooltip_style: TooltipStyle,
-    enabled: bool,
-    spacing: f32,
-    on_click: F,
-    tooltip_action: A,
-    action_name: &str,
-    cx: &mut ViewContext<Toolbar>,
-) -> AnyElement<Toolbar> {
-    MouseEventHandler::<A, _>::new(0, cx, |state, _| {
-        let style = if enabled {
-            style.style_for(state)
-        } else {
-            style.disabled_style()
-        };
-        Svg::new(svg_path)
-            .with_color(style.color)
-            .constrained()
-            .with_width(style.icon_width)
-            .aligned()
-            .contained()
-            .with_style(style.container)
-            .constrained()
-            .with_width(style.button_width)
-            .with_height(nav_button_height)
-            .aligned()
-            .top()
-    })
-    .with_cursor_style(if enabled {
-        CursorStyle::PointingHand
-    } else {
-        CursorStyle::default()
-    })
-    .on_click(MouseButton::Left, move |_, toolbar, cx| {
-        on_click(toolbar, cx)
-    })
-    .with_tooltip::<A>(
-        0,
-        action_name.to_string(),
-        Some(Box::new(tooltip_action)),
-        tooltip_style,
-        cx,
-    )
-    .contained()
-    .with_margin_right(spacing)
-    .into_any_named("nav button")
-}
-
 impl Toolbar {
-    pub fn new(pane: Option<WeakViewHandle<Pane>>) -> Self {
+    pub fn new() -> Self {
         Self {
             active_item: None,
-            pane,
             items: Default::default(),
             hidden: false,
             can_navigate: true,

styles/src/style_tree/tab_bar.ts 🔗

@@ -100,7 +100,7 @@ export default function tab_bar(): any {
                 color: foreground(theme.highest, "on", "disabled"),
             },
         },
-    });
+    })
     const dragged_tab = {
         ...active_pane_active_tab,
         background: with_opacity(tab.background, 0.9),

styles/src/style_tree/workspace.ts 🔗

@@ -132,23 +132,6 @@ export default function workspace(): any {
             background: background(theme.highest),
             border: border(theme.highest, { bottom: true }),
             item_spacing: 8,
-            nav_button: interactive({
-                base: {
-                    color: foreground(theme.highest, "on"),
-                    icon_width: 12,
-                    button_width: 24,
-                    corner_radius: 6,
-                },
-                state: {
-                    hovered: {
-                        color: foreground(theme.highest, "on", "hovered"),
-                        background: background(theme.highest, "on", "hovered"),
-                    },
-                    disabled: {
-                        color: foreground(theme.highest, "on", "disabled"),
-                    },
-                },
-            }),
             padding: { left: 8, right: 8, top: 4, bottom: 4 },
         },
         breadcrumb_height: 24,