Skip to content

Commit

Permalink
RevisionGridControl: Replace KeyUp/Down with Hotkeys (#9898)
Browse files Browse the repository at this point in the history
  • Loading branch information
mstv committed Mar 25, 2022
1 parent e68ad0b commit 82fd53e
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 59 deletions.
4 changes: 4 additions & 0 deletions GitUI/Hotkey/HotkeySettingsManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -297,15 +297,19 @@ public static HotkeySettings[] CreateDefaultSettings()
Hk(RevisionGridControl.Command.CompareToCurrentBranch, Keys.None),
Hk(RevisionGridControl.Command.CompareToWorkingDirectory, Keys.Control | Keys.D),
Hk(RevisionGridControl.Command.CreateFixupCommit, Keys.Control | Keys.X),
Hk(RevisionGridControl.Command.DeleteRef, Keys.Delete),
Hk(RevisionGridControl.Command.GoToChild, Keys.Control | Keys.N),
Hk(RevisionGridControl.Command.GoToCommit, Keys.Control | Keys.Shift | Keys.G),
Hk(RevisionGridControl.Command.GoToMergeBase, Keys.Control | Keys.Shift | Keys.K),
Hk(RevisionGridControl.Command.GoToParent, Keys.Control | Keys.P),
Hk(RevisionGridControl.Command.NavigateBackward, Keys.Alt | Keys.Left),
Hk(RevisionGridControl.Command.NavigateBackward_AlternativeHotkey, Keys.BrowserBack),
Hk(RevisionGridControl.Command.NavigateForward, Keys.Alt | Keys.Right),
Hk(RevisionGridControl.Command.NavigateForward_AlternativeHotkey, Keys.BrowserForward),
Hk(RevisionGridControl.Command.NextQuickSearch, Keys.Alt | Keys.Down),
Hk(RevisionGridControl.Command.OpenCommitsWithDifftool, Keys.None),
Hk(RevisionGridControl.Command.PrevQuickSearch, Keys.Alt | Keys.Up),
Hk(RevisionGridControl.Command.RenameRef, Keys.F2),
Hk(RevisionGridControl.Command.ResetRevisionPathFilter, Keys.Control | Keys.Shift | Keys.H),
Hk(RevisionGridControl.Command.ResetRevisionFilter, Keys.Control | Keys.Shift | Keys.I),
Hk(RevisionGridControl.Command.RevisionFilter, Keys.Control | Keys.I),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ internal enum Command
ResetRevisionFilter = 36,
ResetRevisionPathFilter = 37,
SelectNextForkPointAsDiffBase = 38,
NavigateBackward_AlternativeHotkey = 39,
NavigateForward_AlternativeHotkey = 40,
DeleteRef = 41,
RenameRef = 42,
}
}
}
89 changes: 30 additions & 59 deletions GitUI/UserControls/RevisionGrid/RevisionGridControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,6 @@ public RevisionGridControl()
_gridView.AuthorHighlighting = _authorHighlighting;

_gridView.KeyPress += (_, e) => _quickSearchProvider.OnKeyPress(e);
_gridView.KeyUp += OnGridViewKeyUp;
_gridView.KeyDown += OnGridViewKeyDown;
_gridView.MouseDown += OnGridViewMouseDown;
_gridView.CellMouseDown += OnGridViewCellMouseDown;
_gridView.MouseDoubleClick += OnGridViewDoubleClick;
Expand Down Expand Up @@ -1474,77 +1472,46 @@ private void HighlightRevisionsByAuthor(in IReadOnlyList<GitRevision> selectedRe
}
}

private void OnGridViewKeyDown(object sender, KeyEventArgs e)
private void RenameRef()
{
switch (e.KeyCode)
GitRevision? selectedRevision = LatestSelectedRevision;
if (selectedRevision is null)
{
case Keys.BrowserBack:
{
NavigateBackward();
e.Handled = true;
break;
}

case Keys.BrowserForward:
{
NavigateForward();
e.Handled = true;
break;
}
return;
}

InitiateRefAction(
new GitRefListsForRevision(selectedRevision).GetRenameableLocalBranches(),
gitRef => UICommands.StartRenameDialog(ParentForm, gitRef.Name),
FormQuickGitRefSelector.Action.Rename);
}

private void OnGridViewKeyUp(object sender, KeyEventArgs e)
private void DeleteRef()
{
GitRevision? selectedRevision = LatestSelectedRevision;

if (selectedRevision is null)
{
return;
}

// https://github.com/gitextensions/gitextensions/issues/5636
if (e.Modifiers != Keys.None)
{
return;
}

switch (e.KeyCode)
{
case Keys.F2:
InitiateRefAction(
new GitRefListsForRevision(selectedRevision).GetDeletableRefs(CurrentBranch.Value),
gitRef =>
{
if (gitRef.IsTag)
{
InitiateRefAction(
new GitRefListsForRevision(selectedRevision).GetRenameableLocalBranches(),
gitRef => UICommands.StartRenameDialog(ParentForm, gitRef.Name),
FormQuickGitRefSelector.Action.Rename);
e.Handled = true;
break;
UICommands.StartDeleteTagDialog(ParentForm, gitRef.Name);
}

case Keys.Delete:
else if (gitRef.IsRemote)
{
InitiateRefAction(
new GitRefListsForRevision(selectedRevision).GetDeletableRefs(CurrentBranch.Value),
gitRef =>
{
if (gitRef.IsTag)
{
UICommands.StartDeleteTagDialog(ParentForm, gitRef.Name);
}
else if (gitRef.IsRemote)
{
UICommands.StartDeleteRemoteBranchDialog(ParentForm, gitRef.Name);
}
else
{
UICommands.StartDeleteBranchDialog(ParentForm, gitRef.Name);
}
},
FormQuickGitRefSelector.Action.Delete);
e.Handled = true;
break;
UICommands.StartDeleteRemoteBranchDialog(ParentForm, gitRef.Name);
}
}
else
{
UICommands.StartDeleteBranchDialog(ParentForm, gitRef.Name);
}
},
FormQuickGitRefSelector.Action.Delete);
}

private void OnGridViewMouseDown(object sender, MouseEventArgs e)
Expand Down Expand Up @@ -2882,8 +2849,10 @@ protected override CommandStatus ExecuteCommand(int cmd)
case Command.ToggleHighlightSelectedBranch: ToggleHighlightSelectedBranch(); break;
case Command.NextQuickSearch: _quickSearchProvider.NextResult(down: true); break;
case Command.PrevQuickSearch: _quickSearchProvider.NextResult(down: false); break;
case Command.NavigateBackward: NavigateBackward(); break;
case Command.NavigateForward: NavigateForward(); break;
case Command.NavigateBackward:
case Command.NavigateBackward_AlternativeHotkey: NavigateBackward(); break;
case Command.NavigateForward:
case Command.NavigateForward_AlternativeHotkey: NavigateForward(); break;
case Command.SelectAsBaseToCompare: selectAsBaseToolStripMenuItem_Click(this, EventArgs.Empty); break;
case Command.CompareToBase: compareToBaseToolStripMenuItem_Click(this, EventArgs.Empty); break;
case Command.CreateFixupCommit: FixupCommitToolStripMenuItemClick(this, EventArgs.Empty); break;
Expand All @@ -2892,6 +2861,8 @@ protected override CommandStatus ExecuteCommand(int cmd)
case Command.CompareToCurrentBranch: CompareWithCurrentBranchToolStripMenuItem_Click(this, EventArgs.Empty); break;
case Command.CompareToBranch: CompareToBranchToolStripMenuItem_Click(this, EventArgs.Empty); break;
case Command.CompareSelectedCommits: compareSelectedCommitsMenuItem_Click(this, EventArgs.Empty); break;
case Command.DeleteRef: DeleteRef(); break;
case Command.RenameRef: RenameRef(); break;
default:
{
var result = base.ExecuteCommand(cmd);
Expand Down

0 comments on commit 82fd53e

Please sign in to comment.