From 5db11c628bf8525d2a46660e874701c702c0e380 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Thu, 23 Mar 2023 13:29:23 -0700 Subject: [PATCH] changed language status bar item to only show on editors --- .../src/active_buffer_language.rs | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/crates/language_selector/src/active_buffer_language.rs b/crates/language_selector/src/active_buffer_language.rs index 3979ce292c..ce4b3aebdd 100644 --- a/crates/language_selector/src/active_buffer_language.rs +++ b/crates/language_selector/src/active_buffer_language.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use workspace::{item::ItemHandle, StatusItemView}; pub struct ActiveBufferLanguage { - active_language: Option>, + active_language: Option>>, _observe_active_editor: Option, } @@ -27,12 +27,12 @@ impl ActiveBufferLanguage { } fn update_language(&mut self, editor: ViewHandle, cx: &mut ViewContext) { - self.active_language.take(); + self.active_language = Some(None); let editor = editor.read(cx); if let Some((_, buffer, _)) = editor.active_excerpt(cx) { if let Some(language) = buffer.read(cx).language() { - self.active_language = Some(language.name()); + self.active_language = Some(Some(language.name())); } } @@ -50,23 +50,27 @@ impl View for ActiveBufferLanguage { } fn render(&mut self, cx: &mut RenderContext) -> ElementBox { - let active_language = if let Some(active_language) = self.active_language.as_ref() { - active_language.to_string() - } else { - "Unknown".to_string() - }; + if let Some(active_language) = self.active_language.as_ref() { + let active_language_text = if let Some(active_language_text) = active_language { + active_language_text.to_string() + } else { + "Unknown".to_string() + }; - MouseEventHandler::::new(0, cx, |state, cx| { - let theme = &cx.global::().theme.workspace.status_bar; - let style = theme.active_language.style_for(state, false); - Label::new(active_language, style.text.clone()) - .contained() - .with_style(style.container) - .boxed() - }) - .with_cursor_style(CursorStyle::PointingHand) - .on_click(MouseButton::Left, |_, cx| cx.dispatch_action(crate::Toggle)) - .boxed() + MouseEventHandler::::new(0, cx, |state, cx| { + let theme = &cx.global::().theme.workspace.status_bar; + let style = theme.active_language.style_for(state, false); + Label::new(active_language_text, style.text.clone()) + .contained() + .with_style(style.container) + .boxed() + }) + .with_cursor_style(CursorStyle::PointingHand) + .on_click(MouseButton::Left, |_, cx| cx.dispatch_action(crate::Toggle)) + .boxed() + } else { + Empty::new().boxed() + } } }