diff --git a/osu.Game/Overlays/Chat/ChatTabControl.cs b/osu.Game/Overlays/Chat/ChatTabControl.cs index 62d24289b1..800ed96025 100644 --- a/osu.Game/Overlays/Chat/ChatTabControl.cs +++ b/osu.Game/Overlays/Chat/ChatTabControl.cs @@ -14,15 +14,20 @@ using osu.Game.Graphics.UserInterface; using osu.Game.Online.Chat; using OpenTK; using OpenTK.Graphics; +using osu.Framework.Configuration; namespace osu.Game.Overlays.Chat { public class ChatTabControl : OsuTabControl { - protected override TabItem CreateTabItem(Channel value) => value.Id == ChatOverlay.CHANNEL_SELECTOR_ID ? new ChannelTabItem.ChannelSelectorTabItem(value) : new ChannelTabItem(value); + protected override TabItem CreateTabItem(Channel value) => new ChannelTabItem(value); private const float shear_width = 10; + private Bindable channelSelectorActive = new Bindable(); + + public Bindable ChannelSelectorActive => channelSelectorActive; + public ChatTabControl() { TabContainer.Margin = new MarginPadding { Left = 50 }; @@ -38,10 +43,7 @@ namespace osu.Game.Overlays.Chat Padding = new MarginPadding(10), }); - AddItem(new Channel - { - Id = ChatOverlay.CHANNEL_SELECTOR_ID, - }); + AddTabItem(new ChannelTabItem.ChannelSelectorTabItem(new Channel(), channelSelectorActive)); } private class ChannelTabItem : TabItem @@ -200,8 +202,21 @@ namespace osu.Game.Overlays.Chat public class ChannelSelectorTabItem : ChannelTabItem { - public ChannelSelectorTabItem(Channel value) : base(value) + public override bool Active { + get { return base.Active; } + set + { + activeBindable.Value = value; + base.Active = value; + } + } + + private Bindable activeBindable; + + public ChannelSelectorTabItem(Channel value, Bindable active) : base(value) + { + activeBindable = active; Depth = float.MaxValue; Width = 60; diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 57c7c2cd69..6c8c176861 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -44,8 +44,6 @@ namespace osu.Game.Overlays public const float TAB_AREA_HEIGHT = 50; - public const int CHANNEL_SELECTOR_ID = -1; - private GetMessagesRequest fetchReq; private readonly ChatTabControl channelTabs; @@ -264,16 +262,7 @@ namespace osu.Game.Overlays { if (currentChannel == value) return; - if (value.Id == CHANNEL_SELECTOR_ID) - { - //channel selector popout - currentChannel = value; - return; - } - else if (currentChannel?.Id == CHANNEL_SELECTOR_ID) - { - //channel selector popin - } + if (channelTabs.ChannelSelectorActive) return; if (currentChannel != null) currentChannelContainer.Clear(false);