diff --git a/BizHawk.Client.EmuHawk/CustomControls/VirtualListView.cs b/BizHawk.Client.EmuHawk/CustomControls/VirtualListView.cs index 3bc4567c6f..12de59c989 100644 --- a/BizHawk.Client.EmuHawk/CustomControls/VirtualListView.cs +++ b/BizHawk.Client.EmuHawk/CustomControls/VirtualListView.cs @@ -776,11 +776,21 @@ namespace BizHawk.Client.EmuHawk selection = -1; } + // Informs user that a select all event is in place, can be used in change events to wait until this is false + public bool SelectAllInProgress { get; set; } + public void SelectAll() { this.BeginUpdate(); + SelectAllInProgress = true; + for (var i = 0; i < _itemCount; i++) { + if (i == _itemCount - 1) + { + SelectAllInProgress = false; + } + this.SelectItem(i, true); } diff --git a/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs b/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs index 8f738425c1..1d738664aa 100644 --- a/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs +++ b/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs @@ -389,16 +389,19 @@ namespace BizHawk.Client.EmuHawk private void DoSelectedIndexChange() { - if (SelectedCheats.Any()) + if (!CheatListView.SelectAllInProgress) { - var cheat = SelectedCheats.First(); - CheatEditor.SetCheat(cheat); - CheatGroupBox.Text = "Editing Cheat " + cheat.Name + " - " + cheat.AddressStr; - } - else - { - CheatEditor.ClearForm(); - CheatGroupBox.Text = "New Cheat"; + if (SelectedCheats.Any()) + { + var cheat = SelectedCheats.First(); + CheatEditor.SetCheat(cheat); + CheatGroupBox.Text = "Editing Cheat " + cheat.Name + " - " + cheat.AddressStr; + } + else + { + CheatEditor.ClearForm(); + CheatGroupBox.Text = "New Cheat"; + } } }