From 0fef17baa23130557813bd688ab0d3064bf4681e Mon Sep 17 00:00:00 2001 From: Vladimir Varankin Date: Mon, 15 Sep 2025 09:43:04 +0200 Subject: [PATCH] Hide BasedPyright banner in toolbar when dismissed (#38135) This PR fixes the `BasedPyrightBanner`, making sure the banner is completely hidden in the toolbar, when it was dismissed, or it's not installed. Without the fix, the banner still occupies some space in the toolbar, making the UI looks inconsistent when editing a Python file. The bug is **especially prominent** when the toolbar is hidden in the user's settings (see below). _Banner is shown_ Screenshot 2025-09-14 at 11 36 37 _Banner dismissed_ Screenshot 2025-09-14 at 11 36 44 _Banner dismissed (and the toolbar is hidden)_ Screenshot 2025-09-14 at 12 07 25 Closes n/a Release Notes: - Fixed the basedpyright onboarding banner --- crates/language_onboarding/src/python.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/language_onboarding/src/python.rs b/crates/language_onboarding/src/python.rs index 6b83b841e0488d67014cc090b6c741035e544e04..e715cb7c806f417980a93a62210c72ca8529fcb5 100644 --- a/crates/language_onboarding/src/python.rs +++ b/crates/language_onboarding/src/python.rs @@ -30,6 +30,10 @@ impl BasedPyrightBanner { _subscriptions: [subscription], } } + + fn onboarding_banner_enabled(&self) -> bool { + !self.dismissed && self.have_basedpyright + } } impl EventEmitter for BasedPyrightBanner {} @@ -38,7 +42,7 @@ impl Render for BasedPyrightBanner { fn render(&mut self, _window: &mut Window, cx: &mut Context) -> impl IntoElement { div() .id("basedpyright-banner") - .when(!self.dismissed && self.have_basedpyright, |el| { + .when(self.onboarding_banner_enabled(), |el| { el.child( Banner::new() .child( @@ -81,6 +85,9 @@ impl ToolbarItemView for BasedPyrightBanner { _window: &mut ui::Window, cx: &mut Context, ) -> ToolbarItemLocation { + if !self.onboarding_banner_enabled() { + return ToolbarItemLocation::Hidden; + } if let Some(item) = active_pane_item && let Some(editor) = item.act_as::(cx) && let Some(path) = editor.update(cx, |editor, cx| editor.target_file_abs_path(cx))