diff --git a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs
index 4b1d595b44..e30c1678d5 100644
--- a/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs
+++ b/osu.Game/Overlays/Chat/Tabs/ChannelTabControl.cs
@@ -59,15 +59,16 @@ namespace osu.Game.Overlays.Chat.Tabs
///
/// Adds a channel to the ChannelTabControl.
- /// The first channel added will automaticly selected.
+ /// The first channel added will automaticly selected if is true.
///
/// The channel that is going to be added.
- public void AddChannel(Channel channel)
+ /// If the current channel should be changed if none was selected before
+ public void AddChannel(Channel channel, bool setChannel = true)
{
if (!Items.Contains(channel))
AddItem(channel);
- if (Current.Value == null)
+ if (Current.Value == null && setChannel)
Current.Value = channel;
}
diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs
index 44772da3c1..4e69e4c9fc 100644
--- a/osu.Game/Overlays/ChatOverlay.cs
+++ b/osu.Game/Overlays/ChatOverlay.cs
@@ -221,8 +221,14 @@ namespace osu.Game.Overlays
// TODO: consider scheduling bindable callbacks to not perform when overlay is not present.
channelManager.JoinedChannels.ItemsAdded += onChannelAddedToJoinedChannels;
channelManager.JoinedChannels.ItemsRemoved += onChannelRemovedFromJoinedChannels;
+
+ bool channelSelected = channelManager.CurrentChannel.Value != null;
+
foreach (Channel channel in channelManager.JoinedChannels)
- ChannelTabControl.AddChannel(channel);
+ ChannelTabControl.AddChannel(channel, !channelSelected);
+
+ if (channelSelected)
+ ChannelTabControl.Current.Value = channelManager.CurrentChannel.Value;
channelManager.AvailableChannels.ItemsAdded += availableChannelsChanged;
channelManager.AvailableChannels.ItemsRemoved += availableChannelsChanged;