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")] [Category("Behavior")]
public int SeekingCutoffInterval { get; set; } 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> /// <summary>
/// Returns all columns including those that are not visible /// Returns all columns including those that are not visible
/// </summary> /// </summary>
@ -1352,33 +1360,47 @@ namespace BizHawk.Client.EmuHawk
// Scroll // Scroll
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageUp) // Page Up else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageUp) // Page Up
{ {
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow; if (ChangeSelectionWhenPaging)
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow - increment;
if (newSelectedRow < 0)
{ {
newSelectedRow = 0; var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
} var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow - increment;
if (newSelectedRow < 0)
{
newSelectedRow = 0;
}
FirstVisibleRow = newSelectedRow; FirstVisibleRow = newSelectedRow;
DeselectAll(); DeselectAll();
SelectRow(newSelectedRow, true); SelectRow(newSelectedRow, true);
Refresh(); Refresh();
}
else if (FirstVisibleRow > 0)
{
LastVisibleRow = FirstVisibleRow;
}
} }
else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageDown) // Page Down else if (!e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.PageDown) // Page Down
{ {
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow; if (ChangeSelectionWhenPaging)
var increment = LastVisibleRow - FirstVisibleRow;
var newSelectedRow = selectedRow + increment;
if (newSelectedRow > RowCount - 1)
{ {
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; LastVisibleRow = newSelectedRow;
DeselectAll(); DeselectAll();
SelectRow(newSelectedRow, true); SelectRow(newSelectedRow, true);
Refresh(); Refresh();
}
else if (LastVisibleRow < RowCount)
{
FirstVisibleRow = LastVisibleRow;
}
} }
else if (AllowMassNavigationShortcuts && !e.Control && !e.Alt && !e.Shift && e.KeyCode == Keys.Home) // Home 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 // TasView
// //
this.TasView.ChangeSelectionWhenPaging = false;
this.TasView.InputPaintingMode = true; this.TasView.InputPaintingMode = true;
this.TasView.CellWidthPadding = 3; this.TasView.CellWidthPadding = 3;
this.TasView.GridLines = true; this.TasView.GridLines = true;