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>
@ -1351,6 +1359,8 @@ 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
{
if (ChangeSelectionWhenPaging)
{ {
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow; var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow; var increment = LastVisibleRow - FirstVisibleRow;
@ -1365,7 +1375,14 @@ namespace BizHawk.Client.EmuHawk
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
{
if (ChangeSelectionWhenPaging)
{ {
var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow; var selectedRow = SelectedRows.Any() ? SelectedRows.First() : FirstVisibleRow;
var increment = LastVisibleRow - FirstVisibleRow; var increment = LastVisibleRow - FirstVisibleRow;
@ -1380,6 +1397,11 @@ namespace BizHawk.Client.EmuHawk
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
{ {
DeselectAll(); DeselectAll();

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;