diff --git a/crates/assistant2/src/assistant_panel.rs b/crates/assistant2/src/assistant_panel.rs index b158facbd9..f93f33d539 100644 --- a/crates/assistant2/src/assistant_panel.rs +++ b/crates/assistant2/src/assistant_panel.rs @@ -1281,6 +1281,10 @@ impl Panel for AssistantPanel { Some(Icon::Ai) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Assistant Panel") + } + fn toggle_action(&self) -> Box { Box::new(ToggleFocus) } diff --git a/crates/collab_ui2/src/chat_panel.rs b/crates/collab_ui2/src/chat_panel.rs index 84bd855754..2e161df9f4 100644 --- a/crates/collab_ui2/src/chat_panel.rs +++ b/crates/collab_ui2/src/chat_panel.rs @@ -611,6 +611,10 @@ impl Panel for ChatPanel { Some(ui::Icon::MessageBubbles) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Chat Panel") + } + fn toggle_action(&self) -> Box { Box::new(ToggleFocus) } diff --git a/crates/collab_ui2/src/collab_panel.rs b/crates/collab_ui2/src/collab_panel.rs index 6b9f8a841b..d564224142 100644 --- a/crates/collab_ui2/src/collab_panel.rs +++ b/crates/collab_ui2/src/collab_panel.rs @@ -2347,6 +2347,10 @@ impl Panel for CollabPanel { .then(|| ui::Icon::Collab) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Collab Panel") + } + fn toggle_action(&self) -> Box { Box::new(ToggleFocus) } diff --git a/crates/collab_ui2/src/notification_panel.rs b/crates/collab_ui2/src/notification_panel.rs index 68df41697f..e000921cda 100644 --- a/crates/collab_ui2/src/notification_panel.rs +++ b/crates/collab_ui2/src/notification_panel.rs @@ -661,6 +661,10 @@ impl Panel for NotificationPanel { .then(|| Icon::Bell) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Notification Panel") + } + fn icon_label(&self, cx: &WindowContext) -> Option { let count = self.notification_store.read(cx).unread_notification_count(); if count == 0 { diff --git a/crates/project_panel2/src/project_panel.rs b/crates/project_panel2/src/project_panel.rs index 7f743015f1..c125f76cd1 100644 --- a/crates/project_panel2/src/project_panel.rs +++ b/crates/project_panel2/src/project_panel.rs @@ -1612,6 +1612,10 @@ impl Panel for ProjectPanel { Some(ui::Icon::FileTree) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Project Panel") + } + fn toggle_action(&self) -> Box { Box::new(ToggleFocus) } diff --git a/crates/terminal_view2/src/terminal_panel.rs b/crates/terminal_view2/src/terminal_panel.rs index d228e9e48d..05e4198f21 100644 --- a/crates/terminal_view2/src/terminal_panel.rs +++ b/crates/terminal_view2/src/terminal_panel.rs @@ -419,6 +419,10 @@ impl Panel for TerminalPanel { Some(Icon::Terminal) } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + Some("Terminal Panel") + } + fn toggle_action(&self) -> Box { Box::new(ToggleFocus) } diff --git a/crates/workspace2/src/dock.rs b/crates/workspace2/src/dock.rs index 3d853cdee1..08949dfd21 100644 --- a/crates/workspace2/src/dock.rs +++ b/crates/workspace2/src/dock.rs @@ -29,8 +29,8 @@ pub trait Panel: FocusableView + EventEmitter { fn set_position(&mut self, position: DockPosition, cx: &mut ViewContext); fn size(&self, cx: &WindowContext) -> Pixels; fn set_size(&mut self, size: Option, cx: &mut ViewContext); - // todo!("We should have a icon tooltip method, rather than using persistant_name") fn icon(&self, cx: &WindowContext) -> Option; + fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>; fn toggle_action(&self) -> Box; fn icon_label(&self, _: &WindowContext) -> Option { None @@ -54,6 +54,7 @@ pub trait PanelHandle: Send + Sync { fn size(&self, cx: &WindowContext) -> Pixels; fn set_size(&self, size: Option, cx: &mut WindowContext); fn icon(&self, cx: &WindowContext) -> Option; + fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str>; fn toggle_action(&self, cx: &WindowContext) -> Box; fn icon_label(&self, cx: &WindowContext) -> Option; fn focus_handle(&self, cx: &AppContext) -> FocusHandle; @@ -108,6 +109,10 @@ where self.read(cx).icon(cx) } + fn icon_tooltip(&self, cx: &WindowContext) -> Option<&'static str> { + self.read(cx).icon_tooltip(cx) + } + fn toggle_action(&self, cx: &WindowContext) -> Box { self.read(cx).toggle_action() } @@ -612,6 +617,7 @@ impl Render for PanelButtons { .enumerate() .filter_map(|(i, entry)| { let icon = entry.panel.icon(cx)?; + let icon_tooltip = entry.panel.icon_tooltip(cx)?; let name = entry.panel.persistent_name(); let panel = entry.panel.clone(); @@ -627,7 +633,7 @@ impl Render for PanelButtons { } else { let action = entry.panel.toggle_action(cx); - (action, name.into()) + (action, icon_tooltip.into()) }; Some( @@ -748,6 +754,10 @@ pub mod test { None } + fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> { + None + } + fn toggle_action(&self) -> Box { ToggleTestPanel.boxed_clone() }