mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-06 02:37:21 +00:00
assistant: Show tooltips on workflow step buttons only when cursor is in step (#16108)
Release Notes: - N/A
This commit is contained in:
parent
fc64843dd5
commit
b6b081596a
1 changed files with 78 additions and 29 deletions
|
@ -1397,6 +1397,21 @@ impl WorkflowStepStatus {
|
|||
cx: &mut BlockContext<'_, '_>,
|
||||
) -> AnyElement {
|
||||
let id = EntityId::from(cx.block_id);
|
||||
fn display_keybind_in_tooltip(
|
||||
step_range: &Range<language::Anchor>,
|
||||
editor: &WeakView<ContextEditor>,
|
||||
cx: &mut WindowContext<'_>,
|
||||
) -> bool {
|
||||
editor
|
||||
.update(cx, |this, _| {
|
||||
this.active_workflow_step
|
||||
.as_ref()
|
||||
.map(|step| &step.range == step_range)
|
||||
})
|
||||
.ok()
|
||||
.flatten()
|
||||
.unwrap_or_default()
|
||||
}
|
||||
match self {
|
||||
WorkflowStepStatus::Resolving => Icon::new(IconName::ArrowCircle)
|
||||
.size(IconSize::Small)
|
||||
|
@ -1448,15 +1463,24 @@ impl WorkflowStepStatus {
|
|||
.icon_size(IconSize::Small)
|
||||
.label_size(LabelSize::Small)
|
||||
.style(ButtonStyle::Tinted(TintColor::Accent))
|
||||
.tooltip(move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
Tooltip::new("Transform").key_binding(KeyBinding::for_action_in(
|
||||
&Assist,
|
||||
&focus_handle,
|
||||
cx,
|
||||
))
|
||||
})
|
||||
.into()
|
||||
.tooltip({
|
||||
let step_range = step_range.clone();
|
||||
let editor = editor.clone();
|
||||
move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
let tooltip = Tooltip::new("Transform");
|
||||
if display_keybind_in_tooltip(&step_range, &editor, cx) {
|
||||
tooltip.key_binding(KeyBinding::for_action_in(
|
||||
&Assist,
|
||||
&focus_handle,
|
||||
cx,
|
||||
))
|
||||
} else {
|
||||
tooltip
|
||||
}
|
||||
})
|
||||
.into()
|
||||
}
|
||||
})
|
||||
.on_click({
|
||||
let editor = editor.clone();
|
||||
|
@ -1476,15 +1500,24 @@ impl WorkflowStepStatus {
|
|||
.icon_size(IconSize::Small)
|
||||
.label_size(LabelSize::Small)
|
||||
.style(ButtonStyle::Tinted(TintColor::Negative))
|
||||
.tooltip(move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
Tooltip::new("Stop Transformation").key_binding(KeyBinding::for_action_in(
|
||||
&editor::actions::Cancel,
|
||||
&focus_handle,
|
||||
cx,
|
||||
))
|
||||
})
|
||||
.into()
|
||||
.tooltip({
|
||||
let step_range = step_range.clone();
|
||||
let editor = editor.clone();
|
||||
move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
let tooltip = Tooltip::new("Stop Transformation");
|
||||
if display_keybind_in_tooltip(&step_range, &editor, cx) {
|
||||
tooltip.key_binding(KeyBinding::for_action_in(
|
||||
&editor::actions::Cancel,
|
||||
&focus_handle,
|
||||
cx,
|
||||
))
|
||||
} else {
|
||||
tooltip
|
||||
}
|
||||
})
|
||||
.into()
|
||||
}
|
||||
})
|
||||
.on_click({
|
||||
let editor = editor.clone();
|
||||
|
@ -1509,15 +1542,20 @@ impl WorkflowStepStatus {
|
|||
.style(ButtonStyle::Tinted(TintColor::Negative))
|
||||
.tooltip({
|
||||
let focus_handle = focus_handle.clone();
|
||||
let editor = editor.clone();
|
||||
let step_range = step_range.clone();
|
||||
move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
Tooltip::new("Reject Transformation").key_binding(
|
||||
KeyBinding::for_action_in(
|
||||
let tooltip = Tooltip::new("Reject Transformation");
|
||||
if display_keybind_in_tooltip(&step_range, &editor, cx) {
|
||||
tooltip.key_binding(KeyBinding::for_action_in(
|
||||
&editor::actions::Cancel,
|
||||
&focus_handle,
|
||||
cx,
|
||||
),
|
||||
)
|
||||
))
|
||||
} else {
|
||||
tooltip
|
||||
}
|
||||
})
|
||||
.into()
|
||||
}
|
||||
|
@ -1541,13 +1579,24 @@ impl WorkflowStepStatus {
|
|||
.icon_size(IconSize::Small)
|
||||
.label_size(LabelSize::Small)
|
||||
.style(ButtonStyle::Tinted(TintColor::Positive))
|
||||
.tooltip(move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
Tooltip::new("Accept Transformation").key_binding(
|
||||
KeyBinding::for_action_in(&Assist, &focus_handle, cx),
|
||||
)
|
||||
})
|
||||
.into()
|
||||
.tooltip({
|
||||
let editor = editor.clone();
|
||||
let step_range = step_range.clone();
|
||||
move |cx| {
|
||||
cx.new_view(|cx| {
|
||||
let tooltip = Tooltip::new("Accept Transformation");
|
||||
if display_keybind_in_tooltip(&step_range, &editor, cx) {
|
||||
tooltip.key_binding(KeyBinding::for_action_in(
|
||||
&Assist,
|
||||
&focus_handle,
|
||||
cx,
|
||||
))
|
||||
} else {
|
||||
tooltip
|
||||
}
|
||||
})
|
||||
.into()
|
||||
}
|
||||
})
|
||||
.on_click({
|
||||
let editor = editor.clone();
|
||||
|
|
Loading…
Reference in a new issue