diff --git a/crates/activity_indicator/src/activity_indicator.rs b/crates/activity_indicator/src/activity_indicator.rs index 3f318866c34b178986afaa6e7ad64a45ab43931d..709cd8ed289351dc64f12a104c0c58088779e00b 100644 --- a/crates/activity_indicator/src/activity_indicator.rs +++ b/crates/activity_indicator/src/activity_indicator.rs @@ -377,34 +377,36 @@ impl Render for ActivityIndicator { fn render(&mut self, cx: &mut ViewContext) -> impl IntoElement { let content = self.content_to_render(cx); - let mut result = h_flex() + let result = h_flex() .id("activity-indicator") .on_action(cx.listener(Self::show_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(); result.gap_2().child( PopoverMenu::new("activity-indicator-popover") .trigger( ButtonLike::new("activity-indicator-trigger").child( h_flex() + .id("activity-indicator-status") .gap_2() .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) .menu(move |cx| { 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) { + has_work = true; let this = this.clone(); let mut title = work .progress @@ -451,8 +453,8 @@ impl Render for ActivityIndicator { } } menu - }) - .into() + }); + has_work.then_some(menu) }), ) }