1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 12:07:23 +08:00

Use existing GetStateFromSelection helper function

This commit is contained in:
Dean Herbert 2021-05-03 15:13:32 +09:00
parent f3b305bbe6
commit 01984de9c7
3 changed files with 12 additions and 24 deletions

View File

@ -108,17 +108,6 @@ namespace osu.Game.Screens.Edit.Compose.Components
}
}
/// <summary>
/// Given a selection target and a function of truth, retrieve the correct ternary state for display.
/// </summary>
protected TernaryState GetStateFromSelection<T>(IEnumerable<T> selection, Func<T, bool> func)
{
if (selection.Any(func))
return selection.All(func) ? TernaryState.True : TernaryState.Indeterminate;
return TernaryState.False;
}
#endregion
#region Ternary state changes

View File

@ -268,6 +268,17 @@ namespace osu.Game.Screens.Edit.Compose.Components
DeleteSelected();
}
/// <summary>
/// Given a selection target and a function of truth, retrieve the correct ternary state for display.
/// </summary>
protected static TernaryState GetStateFromSelection<TObject>(IEnumerable<TObject> selection, Func<TObject, bool> func)
{
if (selection.Any(func))
return selection.All(func) ? TernaryState.True : TernaryState.Indeterminate;
return TernaryState.False;
}
/// <summary>
/// Called whenever the deletion of items has been requested.
/// </summary>

View File

@ -53,21 +53,9 @@ namespace osu.Game.Skinning.Editor
return displayableAnchors.Select(a =>
{
var countExisting = selection.Count(b => ((Drawable)b.Item).Anchor == a);
var countTotal = selection.Count();
TernaryState state;
if (countExisting == countTotal)
state = TernaryState.True;
else if (countExisting > 0)
state = TernaryState.Indeterminate;
else
state = TernaryState.False;
return new AnchorMenuItem(a, selection, _ => applyAnchor(a))
{
State = { Value = state }
State = { Value = GetStateFromSelection(selection, c => ((Drawable)c.Item).Anchor == a) }
};
});
}