diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs
index 5178413ad6..919a320bca 100644
--- a/osu.Game/Screens/Select/BeatmapCarousel.cs
+++ b/osu.Game/Screens/Select/BeatmapCarousel.cs
@@ -64,7 +64,7 @@ namespace osu.Game.Screens.Select
///
/// The total count of non-filtered beatmaps displayed.
///
- public int CountDisplayed => beatmapSets.Where(s => !s.Filtered.Value).Sum(s => s.Beatmaps.Count(b => !b.Filtered.Value));
+ public int CountDisplayed => beatmapSets.Where(s => !s.Filtered.Value).Sum(s => s.TotalItemsNotFiltered);
///
/// The currently selected beatmap set.
diff --git a/osu.Game/Screens/Select/Carousel/CarouselGroup.cs b/osu.Game/Screens/Select/Carousel/CarouselGroup.cs
index c353ee98ae..5aefdf5e28 100644
--- a/osu.Game/Screens/Select/Carousel/CarouselGroup.cs
+++ b/osu.Game/Screens/Select/Carousel/CarouselGroup.cs
@@ -14,6 +14,8 @@ namespace osu.Game.Screens.Select.Carousel
public IReadOnlyList Items => items;
+ public int TotalItemsNotFiltered { get; private set; }
+
private readonly List items = new List();
///
@@ -31,6 +33,9 @@ namespace osu.Game.Screens.Select.Carousel
{
items.Remove(i);
+ if (!i.Filtered.Value)
+ TotalItemsNotFiltered--;
+
// it's important we do the deselection after removing, so any further actions based on
// State.ValueChanged make decisions post-removal.
i.State.Value = CarouselItemState.Collapsed;
@@ -55,6 +60,9 @@ namespace osu.Game.Screens.Select.Carousel
// criteria may be null for initial population. the filtering will be applied post-add.
items.Add(i);
}
+
+ if (!i.Filtered.Value)
+ TotalItemsNotFiltered--;
}
public CarouselGroup(List? items = null)
@@ -84,7 +92,14 @@ namespace osu.Game.Screens.Select.Carousel
{
base.Filter(criteria);
- items.ForEach(c => c.Filter(criteria));
+ TotalItemsNotFiltered = 0;
+
+ foreach (var c in items)
+ {
+ c.Filter(criteria);
+ if (!c.Filtered.Value)
+ TotalItemsNotFiltered++;
+ }
// Sorting is expensive, so only perform if it's actually changed.
if (lastCriteria?.Sort != criteria.Sort)