collab_ui: Show the chat panel icon when the chat panel is active (#22593)

Marshall Bowers created

This PR is a follow-up to #22200 that makes it so the chat panel icon is
visible when the chat panel is active, even if not in a call (when using
the `when_in_call` setting).

Release Notes:

- N/A

Change summary

crates/collab_ui/src/chat_panel.rs | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)

Detailed changes

crates/collab_ui/src/chat_panel.rs 🔗

@@ -1135,15 +1135,20 @@ impl Panel for ChatPanel {
     }
 
     fn icon(&self, cx: &WindowContext) -> Option<ui::IconName> {
-        match ChatPanelSettings::get_global(cx).button {
-            ChatPanelButton::Never => None,
-            ChatPanelButton::Always => Some(ui::IconName::MessageBubbles),
-            ChatPanelButton::WhenInCall => ActiveCall::global(cx)
-                .read(cx)
-                .room()
-                .filter(|room| room.read(cx).contains_guests())
-                .map(|_| ui::IconName::MessageBubbles),
-        }
+        let show_icon = match ChatPanelSettings::get_global(cx).button {
+            ChatPanelButton::Never => false,
+            ChatPanelButton::Always => true,
+            ChatPanelButton::WhenInCall => {
+                let is_in_call = ActiveCall::global(cx)
+                    .read(cx)
+                    .room()
+                    .map_or(false, |room| room.read(cx).contains_guests());
+
+                self.active || is_in_call
+            }
+        };
+
+        show_icon.then(|| ui::IconName::MessageBubbles)
     }
 
     fn icon_tooltip(&self, _cx: &WindowContext) -> Option<&'static str> {