activity indicator: fix popover menu appearing for empty lists (#16734)
Release Notes: - N/A --------- Co-authored-by: Kirill Bulatov <kirill@zed.dev>
This commit is contained in:
parent
82090c60ca
commit
119e337344
1 changed files with 14 additions and 12 deletions
|
@ -377,34 +377,36 @@ impl Render for ActivityIndicator {
|
||||||
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
|
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
|
||||||
let content = self.content_to_render(cx);
|
let content = self.content_to_render(cx);
|
||||||
|
|
||||||
let mut result = h_flex()
|
let result = h_flex()
|
||||||
.id("activity-indicator")
|
.id("activity-indicator")
|
||||||
.on_action(cx.listener(Self::show_error_message))
|
.on_action(cx.listener(Self::show_error_message))
|
||||||
.on_action(cx.listener(Self::dismiss_error_message));
|
.on_action(cx.listener(Self::dismiss_error_message));
|
||||||
|
|
||||||
if let Some(on_click) = content.on_click {
|
|
||||||
result = result
|
|
||||||
.cursor(CursorStyle::PointingHand)
|
|
||||||
.on_click(cx.listener(move |this, _, cx| {
|
|
||||||
on_click(this, cx);
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
let this = cx.view().downgrade();
|
let this = cx.view().downgrade();
|
||||||
result.gap_2().child(
|
result.gap_2().child(
|
||||||
PopoverMenu::new("activity-indicator-popover")
|
PopoverMenu::new("activity-indicator-popover")
|
||||||
.trigger(
|
.trigger(
|
||||||
ButtonLike::new("activity-indicator-trigger").child(
|
ButtonLike::new("activity-indicator-trigger").child(
|
||||||
h_flex()
|
h_flex()
|
||||||
|
.id("activity-indicator-status")
|
||||||
.gap_2()
|
.gap_2()
|
||||||
.children(content.icon)
|
.children(content.icon)
|
||||||
.child(Label::new(content.message).size(LabelSize::Small)),
|
.child(Label::new(content.message).size(LabelSize::Small))
|
||||||
|
.when_some(content.on_click, |this, handler| {
|
||||||
|
this.on_click(cx.listener(move |this, _, cx| {
|
||||||
|
handler(this, cx);
|
||||||
|
}))
|
||||||
|
.cursor(CursorStyle::PointingHand)
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.anchor(gpui::AnchorCorner::BottomLeft)
|
.anchor(gpui::AnchorCorner::BottomLeft)
|
||||||
.menu(move |cx| {
|
.menu(move |cx| {
|
||||||
let strong_this = this.upgrade()?;
|
let strong_this = this.upgrade()?;
|
||||||
ContextMenu::build(cx, |mut menu, cx| {
|
let mut has_work = false;
|
||||||
|
let menu = ContextMenu::build(cx, |mut menu, cx| {
|
||||||
for work in strong_this.read(cx).pending_language_server_work(cx) {
|
for work in strong_this.read(cx).pending_language_server_work(cx) {
|
||||||
|
has_work = true;
|
||||||
let this = this.clone();
|
let this = this.clone();
|
||||||
let mut title = work
|
let mut title = work
|
||||||
.progress
|
.progress
|
||||||
|
@ -451,8 +453,8 @@ impl Render for ActivityIndicator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
menu
|
menu
|
||||||
})
|
});
|
||||||
.into()
|
has_work.then_some(menu)
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue