diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlayFreestyleSelectV2.cs b/osu.Game/Screens/OnlinePlay/OnlinePlayFreestyleSelectV2.cs
index 751c23d526..b5b53e51af 100644
--- a/osu.Game/Screens/OnlinePlay/OnlinePlayFreestyleSelectV2.cs
+++ b/osu.Game/Screens/OnlinePlay/OnlinePlayFreestyleSelectV2.cs
@@ -33,6 +33,8 @@ namespace osu.Game.Screens.OnlinePlay
this.item = item;
Padding = new MarginPadding { Horizontal = HORIZONTAL_OVERFLOW_PADDING };
+
+ SupportScoping = false;
}
[BackgroundDependencyLoader]
diff --git a/osu.Game/Screens/SelectV2/PanelBeatmapSet.SpreadDisplay.cs b/osu.Game/Screens/SelectV2/PanelBeatmapSet.SpreadDisplay.cs
index 08ea270e1f..89916b13d8 100644
--- a/osu.Game/Screens/SelectV2/PanelBeatmapSet.SpreadDisplay.cs
+++ b/osu.Game/Screens/SelectV2/PanelBeatmapSet.SpreadDisplay.cs
@@ -108,6 +108,7 @@ namespace osu.Game.Screens.SelectV2
showConvertedBeatmaps.BindValueChanged(_ => updateBeatmapSet(), true);
Expanded.BindValueChanged(_ => updateEnabled());
scopedBeatmapSet.BindValueChanged(_ => updateEnabled(), true);
+ scopedBeatmapSet.BindDisabledChanged(_ => updateEnabled(), true);
Enabled.BindValueChanged(_ => updateAppearance(), true);
FinishTransforms(true);
}
@@ -210,7 +211,7 @@ namespace osu.Game.Screens.SelectV2
private void updateEnabled()
{
- Enabled.Value = Expanded.Value && scopedBeatmapSet.Value == null;
+ Enabled.Value = Expanded.Value && !scopedBeatmapSet.Disabled && scopedBeatmapSet.Value == null;
}
protected override bool OnMouseDown(MouseDownEvent e)
diff --git a/osu.Game/Screens/SelectV2/SongSelect.cs b/osu.Game/Screens/SelectV2/SongSelect.cs
index d144daad7b..a535d827d6 100644
--- a/osu.Game/Screens/SelectV2/SongSelect.cs
+++ b/osu.Game/Screens/SelectV2/SongSelect.cs
@@ -93,6 +93,12 @@ namespace osu.Game.Screens.SelectV2
///
protected bool ControlGlobalMusic { get; init; } = true;
+ ///
+ /// Whether this song select instance should allow scoping down to a specific beatmap set,
+ /// exposing other difficulties that are otherwise hidden by filter criteria.
+ ///
+ protected bool SupportScoping { init => scopedBeatmapSet.Disabled = !value; }
+
///
/// Whether the osu! logo should be shown at the bottom-right of the screen.
///