diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs
index 0b095ecb83..0fd822896f 100644
--- a/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs
+++ b/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs
@@ -1292,55 +1292,58 @@ namespace BizHawk.Client.EmuHawk
/// The cell to select.
private void SelectCell(Cell cell, bool toggle = false)
{
- if (!MultiSelect)
+ if (cell.RowIndex.HasValue && cell.RowIndex < RowCount)
{
- SelectedItems.Clear();
- }
-
- if (FullRowSelect)
- {
- if (toggle && SelectedItems.Any(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex))
+ if (!MultiSelect)
{
- var items = SelectedItems
- .Where(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex)
- .ToList();
-
- foreach (var item in items)
- {
- SelectedItems.Remove(item);
- }
+ SelectedItems.Clear();
}
- else
+
+ if (FullRowSelect)
{
- foreach (var column in _columns)
+ if (toggle && SelectedItems.Any(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex))
{
- SelectedItems.Add(new Cell
+ var items = SelectedItems
+ .Where(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex)
+ .ToList();
+
+ foreach (var item in items)
{
- RowIndex = cell.RowIndex,
- Column = column
- });
+ SelectedItems.Remove(item);
+ }
}
- }
- }
- else
- {
- if (toggle && SelectedItems.Any(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex))
- {
- var item = SelectedItems
- .FirstOrDefault(x => x.Equals(cell));
-
- if (item != null)
+ else
{
- SelectedItems.Remove(item);
+ foreach (var column in _columns)
+ {
+ SelectedItems.Add(new Cell
+ {
+ RowIndex = cell.RowIndex,
+ Column = column
+ });
+ }
}
}
else
{
- SelectedItems.Add(CurrentCell);
- }
- }
+ if (toggle && SelectedItems.Any(x => x.RowIndex.HasValue && x.RowIndex == cell.RowIndex))
+ {
+ var item = SelectedItems
+ .FirstOrDefault(x => x.Equals(cell));
- SelectedIndexChanged(this, new EventArgs());
+ if (item != null)
+ {
+ SelectedItems.Remove(item);
+ }
+ }
+ else
+ {
+ SelectedItems.Add(CurrentCell);
+ }
+ }
+
+ SelectedIndexChanged(this, new EventArgs());
+ }
}
///