InputRoll - don't highlight past RowCount!

This commit is contained in:
adelikat 2014-09-21 16:27:49 +00:00
parent 9603f41769
commit a7baed9007
1 changed files with 39 additions and 36 deletions

View File

@ -1292,55 +1292,58 @@ namespace BizHawk.Client.EmuHawk
/// <param name="cell">The cell to select.</param>
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());
}
}
/// <summary>