add an option to InputRoll for "Selection when paging", as a bit of a hack to revert Tastudio back to its old PgUp/Dn behavior, while still keeping the current behavior for other input roll usages (as it makes more sense for traditional listview behavior). Fixes #2074

This commit is contained in:
adelikat 2020-07-11 13:49:00 -05:00
parent 4343414937
commit cb575d36b4
2 changed files with 43 additions and 20 deletions

View File

@ -376,6 +376,14 @@ namespace BizHawk.Client.EmuHawk
[Category("Behavior")]
public int SeekingCutoffInterval { get; set; }
/// <summary>
/// Gets or sets a value indicating whether pressing page up/down will cause
/// the current selection to change
/// </summary>
[DefaultValue(false)]
[Category("Behavior")]
public bool ChangeSelectionWhenPaging { get; set; } = true;
/// <summary>
/// Returns all columns including those that are not visible
/// </summary>
@ -1352,33 +1360,47 @@ namespace BizHawk.Client.EmuHawk
// Scroll
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageUp) // Page Up
{
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow - increment;
if (newSelectedRow < 0)
if (ChangeSelectionWhenPaging)
{
newSelectedRow = 0;
}
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow - increment;
if (newSelectedRow < 0)
{
newSelectedRow = 0;
}
FirstVisibleRow = newSelectedRow;
DeselectAll();
SelectRow(newSelectedRow, true);
Refresh();
FirstVisibleRow = newSelectedRow;
DeselectAll();
SelectRow(newSelectedRow, true);
Refresh();
}
else if (FirstVisibleRow > 0)
{
LastVisibleRow = FirstVisibleRow;
}
}
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageDown) // Page Down
{
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow + increment;
if (newSelectedRow > RowCount - 1)
if (ChangeSelectionWhenPaging)
{
newSelectedRow = RowCount - 1;
}
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow + increment;
if (newSelectedRow > RowCount - 1)
{
newSelectedRow = RowCount - 1;
}
LastVisibleRow = newSelectedRow;
DeselectAll();
SelectRow(newSelectedRow, true);
Refresh();
LastVisibleRow = newSelectedRow;
DeselectAll();
SelectRow(newSelectedRow, true);
Refresh();
}
else if (LastVisibleRow < RowCount)
{
FirstVisibleRow = LastVisibleRow;
}
}
else if (AllowMassNavigationShortcuts && !e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.Home) // Home
{

View File

@ -880,6 +880,7 @@ namespace BizHawk.Client.EmuHawk
//
// TasView
//
this.TasView.ChangeSelectionWhenPaging = false;
this.TasView.InputPaintingMode = true;
this.TasView.CellWidthPadding = 3;
this.TasView.GridLines = true;