Show symlink tooltip on icon hover only (#12419)

Kirill Bulatov created

Small follow-up of https://github.com/zed-industries/zed/pull/12263 

Release Notes:

- N/A

Change summary

crates/project_panel/src/project_panel.rs | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)

Detailed changes

crates/project_panel/src/project_panel.rs 🔗

@@ -10,9 +10,9 @@ use anyhow::{anyhow, Result};
 use collections::{hash_map, BTreeSet, HashMap};
 use git::repository::GitFileStatus;
 use gpui::{
-    actions, anchored, deferred, div, impl_actions, px, uniform_list, Action, AppContext,
-    AssetSource, AsyncWindowContext, ClipboardItem, DismissEvent, Div, EventEmitter, FocusHandle,
-    FocusableView, InteractiveElement, KeyContext, Model, MouseButton, MouseDownEvent,
+    actions, anchored, deferred, div, impl_actions, px, uniform_list, Action, AnyElement,
+    AppContext, AssetSource, AsyncWindowContext, ClipboardItem, DismissEvent, Div, EventEmitter,
+    FocusHandle, FocusableView, InteractiveElement, KeyContext, Model, MouseButton, MouseDownEvent,
     ParentElement, Pixels, Point, PromptLevel, Render, Stateful, Styled, Subscription, Task,
     UniformListScrollHandle, View, ViewContext, VisualContext as _, WeakView, WindowContext,
 };
@@ -1940,12 +1940,19 @@ impl ProjectPanel {
                     .indent_step_size(px(settings.indent_size))
                     .selected(is_marked)
                     .when_some(canonical_path, |this, path| {
-                        this.end_slot::<Icon>(
-                            Icon::new(IconName::ArrowUpRight)
-                                .size(IconSize::Indicator)
-                                .color(filename_text_color),
+                        this.end_slot::<AnyElement>(
+                            div()
+                                .id("symlink_icon")
+                                .tooltip(move |cx| {
+                                    Tooltip::text(format!("{path} • Symbolic Link"), cx)
+                                })
+                                .child(
+                                    Icon::new(IconName::ArrowUpRight)
+                                        .size(IconSize::Indicator)
+                                        .color(filename_text_color),
+                                )
+                                .into_any_element(),
                         )
-                        .tooltip(move |cx| Tooltip::text(format!("{path} • Symbolic Link"), cx))
                     })
                     .child(if let Some(icon) = &icon {
                         h_flex().child(Icon::from_path(icon.to_string()).color(filename_text_color))