From 44fe60f2536b00cd1b2d513facba570704735360 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 21 Sep 2014 16:00:42 +0000 Subject: [PATCH] InputRoll - ctrl-click now toggle if clicking an already highlighted row --- .../tools/TAStudio/InputRoll.cs | 48 ++++++++++++++----- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs index e24d784097..8282801cf8 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/InputRoll.cs @@ -899,11 +899,6 @@ namespace BizHawk.Client.EmuHawk #region Mouse and Key Events - //protected override void OnKeyDown(KeyEventArgs e) - //{ - // base.OnKeyDown(e); - //} - protected override void OnMouseMove(MouseEventArgs e) { var newCell = CalculatePointedCell(e.X, e.Y); @@ -978,7 +973,7 @@ namespace BizHawk.Client.EmuHawk } else if (ModifierKeys == Keys.Control) { - SelectCell(CurrentCell); + SelectCell(CurrentCell, toggle: true); } else { @@ -1237,7 +1232,7 @@ namespace BizHawk.Client.EmuHawk /// If FullRowSelect is enabled, selects all cells in the row that contains the given cell. Otherwise only given cell is added. /// /// The cell to select. - private void SelectCell(Cell cell) + private void SelectCell(Cell cell, bool toggle = false) { if (!MultiSelect) { @@ -1246,18 +1241,45 @@ namespace BizHawk.Client.EmuHawk 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 + { + 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)); + + if (item != null) + { + SelectedItems.Remove(item); + } + } + else + { + SelectedItems.Add(CurrentCell); + } } SelectedIndexChanged(this, new EventArgs());