diff --git a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs
index 865e225645..b7b222d87b 100644
--- a/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs
+++ b/osu.Game/Screens/Edit/Compose/Components/BlueprintContainer.cs
@@ -367,14 +367,12 @@ namespace osu.Game.Screens.Edit.Compose.Components
{
selectionHandler.HandleSelected(blueprint);
SelectionBlueprints.ChangeChildDepth(blueprint, 1);
- beatmap.SelectedHitObjects.Add(blueprint.HitObject);
}
private void onBlueprintDeselected(SelectionBlueprint blueprint)
{
selectionHandler.HandleDeselected(blueprint);
SelectionBlueprints.ChangeChildDepth(blueprint, 0);
- beatmap.SelectedHitObjects.Remove(blueprint.HitObject);
}
#endregion
diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs
index 9700cb8c8e..f397ee1596 100644
--- a/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs
+++ b/osu.Game/Screens/Edit/Compose/Components/SelectionHandler.cs
@@ -145,10 +145,16 @@ namespace osu.Game.Screens.Edit.Compose.Components
/// The blueprint.
internal void HandleSelected(SelectionBlueprint blueprint)
{
- selectedBlueprints.Add(blueprint);
- EditorBeatmap.SelectedHitObjects.Add(blueprint.HitObject);
+ if (!selectedBlueprints.Contains(blueprint))
+ {
+ selectedBlueprints.Add(blueprint);
- UpdateVisibility();
+ // need to check this as well, as there are potentially multiple SelectionHandlers and the above check is not enough.
+ if (!EditorBeatmap.SelectedHitObjects.Contains(blueprint.HitObject))
+ EditorBeatmap.SelectedHitObjects.Add(blueprint.HitObject);
+
+ UpdateVisibility();
+ }
}
///
@@ -157,10 +163,12 @@ namespace osu.Game.Screens.Edit.Compose.Components
/// The blueprint.
internal void HandleDeselected(SelectionBlueprint blueprint)
{
- selectedBlueprints.Remove(blueprint);
- EditorBeatmap.SelectedHitObjects.Remove(blueprint.HitObject);
+ if (selectedBlueprints.Remove(blueprint))
+ {
+ EditorBeatmap.SelectedHitObjects.Remove(blueprint.HitObject);
- UpdateVisibility();
+ UpdateVisibility();
+ }
}
///