diff --git a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs index 805d5d3213..146d042ca0 100644 --- a/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs +++ b/osu.Game.Tests/Visual/SongSelectV2/TestSceneBeatmapCarouselFiltering.cs @@ -290,5 +290,26 @@ namespace osu.Game.Tests.Visual.SongSelectV2 CheckDisplayedBeatmapsCount(local_set_count); } + + [Test] + public void TestFirstDifficultyFiltered() + { + AddBeatmaps(2, 3); + WaitForDrawablePanels(); + + SelectNextGroup(); + WaitForSelection(0, 0); + + CheckDisplayedBeatmapsCount(6); + + ApplyToFilter("filter first away", c => c.UserStarDifficulty.Min = 3); + WaitForFiltering(); + + CheckDisplayedBeatmapsCount(4); + + SelectNextGroup(); + SelectPrevGroup(); + WaitForSelection(0, 1); + } } } diff --git a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs index 4c70b8c58f..4784eaeb32 100644 --- a/osu.Game/Screens/SelectV2/BeatmapCarousel.cs +++ b/osu.Game/Screens/SelectV2/BeatmapCarousel.cs @@ -181,8 +181,10 @@ namespace osu.Game.Screens.SelectV2 return; case BeatmapSetInfo setInfo: - // Selecting a set isn't valid – let's re-select the first difficulty. - CurrentSelection = setInfo.Beatmaps.First(); + // Selecting a set isn't valid – let's re-select the first visible difficulty. + if (grouping.SetItems.TryGetValue(setInfo, out var items)) + CurrentSelection = items.Select(i => i.Model).OfType().First(); + return; case BeatmapInfo beatmapInfo: