pane: Add tooltips to close/unpin buttons (#17521)
These tooltips also showcase keybinds when the tab is an active one. /cc @danilo-leal Release Notes: - N/A
This commit is contained in:
parent
a7da16d192
commit
b401f6951b
1 changed files with 24 additions and 3 deletions
|
@ -1789,6 +1789,7 @@ impl Pane {
|
||||||
ix: usize,
|
ix: usize,
|
||||||
item: &dyn ItemHandle,
|
item: &dyn ItemHandle,
|
||||||
detail: usize,
|
detail: usize,
|
||||||
|
focus_handle: &FocusHandle,
|
||||||
cx: &mut ViewContext<'_, Pane>,
|
cx: &mut ViewContext<'_, Pane>,
|
||||||
) -> impl IntoElement {
|
) -> impl IntoElement {
|
||||||
let project_path = item.project_path(cx);
|
let project_path = item.project_path(cx);
|
||||||
|
@ -1899,7 +1900,11 @@ impl Pane {
|
||||||
})
|
})
|
||||||
.start_slot::<Indicator>(indicator)
|
.start_slot::<Indicator>(indicator)
|
||||||
.map(|this| {
|
.map(|this| {
|
||||||
|
let end_slot_action: &'static dyn Action;
|
||||||
|
let end_slot_tooltip_text: &'static str;
|
||||||
let end_slot = if is_pinned {
|
let end_slot = if is_pinned {
|
||||||
|
end_slot_action = &TogglePinTab;
|
||||||
|
end_slot_tooltip_text = "Unpin Tab";
|
||||||
IconButton::new("unpin tab", IconName::Pin)
|
IconButton::new("unpin tab", IconName::Pin)
|
||||||
.shape(IconButtonShape::Square)
|
.shape(IconButtonShape::Square)
|
||||||
.icon_color(Color::Muted)
|
.icon_color(Color::Muted)
|
||||||
|
@ -1908,8 +1913,9 @@ impl Pane {
|
||||||
.on_click(cx.listener(move |pane, _, cx| {
|
.on_click(cx.listener(move |pane, _, cx| {
|
||||||
pane.unpin_tab_at(ix, cx);
|
pane.unpin_tab_at(ix, cx);
|
||||||
}))
|
}))
|
||||||
.tooltip(|cx| Tooltip::text("Unpin Tab", cx))
|
|
||||||
} else {
|
} else {
|
||||||
|
end_slot_action = &CloseActiveItem { save_intent: None };
|
||||||
|
end_slot_tooltip_text = "Close Tab";
|
||||||
IconButton::new("close tab", IconName::Close)
|
IconButton::new("close tab", IconName::Close)
|
||||||
.visible_on_hover("")
|
.visible_on_hover("")
|
||||||
.shape(IconButtonShape::Square)
|
.shape(IconButtonShape::Square)
|
||||||
|
@ -1920,7 +1926,22 @@ impl Pane {
|
||||||
pane.close_item_by_id(item_id, SaveIntent::Close, cx)
|
pane.close_item_by_id(item_id, SaveIntent::Close, cx)
|
||||||
.detach_and_log_err(cx);
|
.detach_and_log_err(cx);
|
||||||
}))
|
}))
|
||||||
};
|
}
|
||||||
|
.map(|this| {
|
||||||
|
if is_active {
|
||||||
|
let focus_handle = focus_handle.clone();
|
||||||
|
this.tooltip(move |cx| {
|
||||||
|
Tooltip::for_action_in(
|
||||||
|
end_slot_tooltip_text,
|
||||||
|
end_slot_action,
|
||||||
|
&focus_handle,
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.tooltip(move |cx| Tooltip::text(end_slot_tooltip_text, cx))
|
||||||
|
}
|
||||||
|
});
|
||||||
this.end_slot(end_slot)
|
this.end_slot(end_slot)
|
||||||
})
|
})
|
||||||
.child(
|
.child(
|
||||||
|
@ -2121,7 +2142,7 @@ impl Pane {
|
||||||
.iter()
|
.iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.zip(tab_details(&self.items, cx))
|
.zip(tab_details(&self.items, cx))
|
||||||
.map(|((ix, item), detail)| self.render_tab(ix, &**item, detail, cx))
|
.map(|((ix, item), detail)| self.render_tab(ix, &**item, detail, &focus_handle, cx))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let unpinned_tabs = tab_items.split_off(self.pinned_tab_count);
|
let unpinned_tabs = tab_items.split_off(self.pinned_tab_count);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue