Skip to content

Commit 494eb13

Browse files
committed
enhance: better undo/redo history in blame (#1686)
Signed-off-by: leo <[email protected]>
1 parent 545a8a2 commit 494eb13

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/ViewModels/Blame.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void Back()
7676
_navigationActiveIndex--;
7777
OnPropertyChanged(nameof(CanBack));
7878
OnPropertyChanged(nameof(CanForward));
79-
NavigateToCommit(_navigationHistory[_navigationActiveIndex]);
79+
NavigateToCommit(_navigationHistory[_navigationActiveIndex], true);
8080
}
8181

8282
public void Forward()
@@ -87,21 +87,27 @@ public void Forward()
8787
_navigationActiveIndex++;
8888
OnPropertyChanged(nameof(CanBack));
8989
OnPropertyChanged(nameof(CanForward));
90-
NavigateToCommit(_navigationHistory[_navigationActiveIndex]);
90+
NavigateToCommit(_navigationHistory[_navigationActiveIndex], true);
9191
}
9292

93-
public void NavigateToCommit(string commitSHA)
93+
public void NavigateToCommit(string commitSHA, bool isBackOrForward)
9494
{
95-
if (!_navigationHistory[_navigationActiveIndex].Equals(commitSHA, StringComparison.Ordinal))
95+
if (Revision.SHA.StartsWith(commitSHA, StringComparison.Ordinal))
96+
return;
97+
98+
if (!isBackOrForward)
9699
{
100+
var count = _navigationHistory.Count;
101+
if (_navigationActiveIndex < count - 1)
102+
_navigationHistory.RemoveRange(_navigationActiveIndex + 1, count - _navigationActiveIndex - 1);
103+
97104
_navigationHistory.Add(commitSHA);
98-
_navigationActiveIndex = _navigationHistory.Count - 1;
105+
_navigationActiveIndex++;
99106
OnPropertyChanged(nameof(CanBack));
100107
OnPropertyChanged(nameof(CanForward));
101108
}
102109

103-
if (!Revision.SHA.StartsWith(commitSHA, StringComparison.Ordinal))
104-
SetBlameData(commitSHA);
110+
SetBlameData(commitSHA);
105111

106112
if (App.GetLauncher() is { Pages: { } pages })
107113
{

src/Views/Blame.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ protected override void OnPointerPressed(PointerPressedEventArgs e)
223223
if (rect.Contains(pos))
224224
{
225225
if (DataContext is ViewModels.Blame blame)
226-
blame.NavigateToCommit(info.CommitSHA);
226+
blame.NavigateToCommit(info.CommitSHA, false);
227227

228228
e.Handled = true;
229229
break;

0 commit comments

Comments
 (0)