Fix items in skin settings not always being removed corrrectly

This commit is contained in:
Dean Herbert
2018-09-03 11:51:03 +09:00
parent 43824c2a94
commit 5efa9c7652

View File

@ -51,10 +51,10 @@ namespace osu.Game.Overlays.Settings.Sections
}, },
}; };
skins.ItemAdded += onItemsChanged; skins.ItemAdded += itemAdded;
skins.ItemRemoved += onItemsChanged; skins.ItemRemoved += itemRemoved;
reloadSkins(); skinDropdown.Items = skins.GetAllUsableSkins().Select(s => new KeyValuePair<string, int>(s.ToString(), s.ID));
var skinBindable = config.GetBindable<int>(OsuSetting.Skin); var skinBindable = config.GetBindable<int>(OsuSetting.Skin);
@ -65,9 +65,8 @@ namespace osu.Game.Overlays.Settings.Sections
skinDropdown.Bindable = skinBindable; skinDropdown.Bindable = skinBindable;
} }
private void reloadSkins() => skinDropdown.Items = skins.GetAllUsableSkins().Select(s => new KeyValuePair<string, int>(s.ToString(), s.ID)); private void itemRemoved(SkinInfo s) => skinDropdown.Items = skinDropdown.Items.Where(i => i.Value != s.ID);
private void itemAdded(SkinInfo s) => skinDropdown.Items = skinDropdown.Items.Append(new KeyValuePair<string, int>(s.ToString(), s.ID));
private void onItemsChanged(SkinInfo _) => Schedule(reloadSkins);
protected override void Dispose(bool isDisposing) protected override void Dispose(bool isDisposing)
{ {
@ -75,8 +74,8 @@ namespace osu.Game.Overlays.Settings.Sections
if (skins != null) if (skins != null)
{ {
skins.ItemAdded -= onItemsChanged; skins.ItemAdded -= itemAdded;
skins.ItemRemoved -= onItemsChanged; skins.ItemRemoved -= itemRemoved;
} }
} }