mirror of
https://github.com/ppy/osu.git
synced 2025-02-16 17:43:12 +08:00
Ensure channel traversal shortcut is using visual order
This commit is contained in:
parent
49ab031e75
commit
4a36f3aa4c
@ -4,6 +4,7 @@
|
|||||||
#nullable enable
|
#nullable enable
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
@ -22,6 +23,8 @@ namespace osu.Game.Overlays.Chat.ChannelList
|
|||||||
public Action<Channel>? OnRequestSelect;
|
public Action<Channel>? OnRequestSelect;
|
||||||
public Action<Channel>? OnRequestLeave;
|
public Action<Channel>? OnRequestLeave;
|
||||||
|
|
||||||
|
public IEnumerable<Channel> Channels => publicChannelFlow.Channels.Concat(privateChannelFlow.Channels);
|
||||||
|
|
||||||
public readonly ChannelListing.ChannelListingChannel ChannelListingChannel = new ChannelListing.ChannelListingChannel();
|
public readonly ChannelListing.ChannelListingChannel ChannelListingChannel = new ChannelListing.ChannelListingChannel();
|
||||||
|
|
||||||
private readonly Dictionary<Channel, ChannelListItem> channelMap = new Dictionary<Channel, ChannelListItem>();
|
private readonly Dictionary<Channel, ChannelListItem> channelMap = new Dictionary<Channel, ChannelListItem>();
|
||||||
@ -118,6 +121,10 @@ namespace osu.Game.Overlays.Chat.ChannelList
|
|||||||
|
|
||||||
private class ChannelListItemFlow : FillFlowContainer
|
private class ChannelListItemFlow : FillFlowContainer
|
||||||
{
|
{
|
||||||
|
public IEnumerable<Channel> Channels => Children.Where(c => c is ChannelListItem)
|
||||||
|
.Cast<ChannelListItem>()
|
||||||
|
.Select(c => c.Channel);
|
||||||
|
|
||||||
public ChannelListItemFlow(string label)
|
public ChannelListItemFlow(string label)
|
||||||
{
|
{
|
||||||
Direction = FillDirection.Vertical;
|
Direction = FillDirection.Vertical;
|
||||||
|
@ -389,7 +389,7 @@ namespace osu.Game.Overlays
|
|||||||
|
|
||||||
private void cycleChannel(int direction)
|
private void cycleChannel(int direction)
|
||||||
{
|
{
|
||||||
List<Channel> overlayChannels = filterToChatChannels(channelManager.JoinedChannels).ToList();
|
List<Channel> overlayChannels = channelList.Channels.ToList();
|
||||||
|
|
||||||
if (overlayChannels.Count < 2)
|
if (overlayChannels.Count < 2)
|
||||||
return;
|
return;
|
||||||
@ -399,6 +399,7 @@ namespace osu.Game.Overlays
|
|||||||
currentChannel.Value = overlayChannels[(currentIndex + direction + overlayChannels.Count) % overlayChannels.Count];
|
currentChannel.Value = overlayChannels[(currentIndex + direction + overlayChannels.Count) % overlayChannels.Count];
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<Channel> filterToChatChannels(IEnumerable channels) => channels.Cast<Channel>().Where(c => c.Type != ChannelType.System);
|
private IEnumerable<Channel> filterToChatChannels(IEnumerable channels)
|
||||||
|
=> channels.Cast<Channel>().Where(c => c.Type == ChannelType.PM || c.Type == ChannelType.Public);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user