diff --git a/osu.Game/Screens/Select/BeatmapCarousel.cs b/osu.Game/Screens/Select/BeatmapCarousel.cs index fbdaa948cc18..4df24c1314ee 100644 --- a/osu.Game/Screens/Select/BeatmapCarousel.cs +++ b/osu.Game/Screens/Select/BeatmapCarousel.cs @@ -107,6 +107,8 @@ public void SelectBeatmap(BeatmapInfo beatmap, bool animated = true) return; } + if (beatmap == SelectedBeatmap) return; + foreach (BeatmapGroup group in groups) { var panel = group.BeatmapPanels.FirstOrDefault(p => p.Beatmap.Equals(beatmap)); @@ -204,7 +206,7 @@ public void Filter(FilterCriteria newCriteria = null, bool debounce = true) if (selectedGroup == null || selectedGroup.State == BeatmapGroupState.Hidden) SelectNext(); else - selectGroup(selectedGroup); + selectGroup(selectedGroup, selectedPanel); }; filterTask?.Cancel(); @@ -339,6 +341,8 @@ private void selectGroup(BeatmapGroup group, BeatmapPanel panel = null, bool ani selectedGroup.State = BeatmapGroupState.Collapsed; group.State = BeatmapGroupState.Expanded; + group.SelectedPanel = panel; + panel.State = PanelSelectedState.Selected; if (selectedPanel == panel) return; diff --git a/osu.Game/Screens/Select/BeatmapDetails.cs b/osu.Game/Screens/Select/BeatmapDetails.cs index b750fc9bbe19..abe54375ccc0 100644 --- a/osu.Game/Screens/Select/BeatmapDetails.cs +++ b/osu.Game/Screens/Select/BeatmapDetails.cs @@ -49,6 +49,8 @@ public BeatmapInfo Beatmap get { return beatmap; } set { + if (beatmap == value) return; + beatmap = value; pendingBeatmapSwitch?.Cancel(); diff --git a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs index a136e298b5ed..a7aa752d6530 100644 --- a/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs +++ b/osu.Game/Screens/Select/Leaderboards/Leaderboard.cs @@ -100,6 +100,8 @@ public BeatmapInfo Beatmap get { return beatmap; } set { + if (beatmap == value) return; + beatmap = value; Scores = null; diff --git a/osu.Game/Screens/Select/SongSelect.cs b/osu.Game/Screens/Select/SongSelect.cs index 4438b656b08c..4982ca096f5a 100644 --- a/osu.Game/Screens/Select/SongSelect.cs +++ b/osu.Game/Screens/Select/SongSelect.cs @@ -313,15 +313,15 @@ private void selectionChanged(BeatmapInfo beatmap) { bool beatmapSetChange = false; - if (!beatmap.Equals(Beatmap?.BeatmapInfo)) + if (beatmap.Equals(Beatmap?.BeatmapInfo)) + return; + + if (beatmap.BeatmapSetInfoID == selectionChangeNoBounce?.BeatmapSetInfoID) + sampleChangeDifficulty.Play(); + else { - if (beatmap.BeatmapSetInfoID == selectionChangeNoBounce?.BeatmapSetInfoID) - sampleChangeDifficulty.Play(); - else - { - sampleChangeBeatmap.Play(); - beatmapSetChange = true; - } + sampleChangeBeatmap.Play(); + beatmapSetChange = true; } selectionChangeNoBounce = beatmap;