enhance: better undo/redo history in blame (#1686)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo
2025-09-23 11:12:29 +08:00
parent 545a8a2766
commit 494eb137be
2 changed files with 14 additions and 8 deletions

View File

@@ -76,7 +76,7 @@ namespace SourceGit.ViewModels
_navigationActiveIndex--;
OnPropertyChanged(nameof(CanBack));
OnPropertyChanged(nameof(CanForward));
NavigateToCommit(_navigationHistory[_navigationActiveIndex]);
NavigateToCommit(_navigationHistory[_navigationActiveIndex], true);
}
public void Forward()
@@ -87,21 +87,27 @@ namespace SourceGit.ViewModels
_navigationActiveIndex++;
OnPropertyChanged(nameof(CanBack));
OnPropertyChanged(nameof(CanForward));
NavigateToCommit(_navigationHistory[_navigationActiveIndex]);
NavigateToCommit(_navigationHistory[_navigationActiveIndex], true);
}
public void NavigateToCommit(string commitSHA)
public void NavigateToCommit(string commitSHA, bool isBackOrForward)
{
if (!_navigationHistory[_navigationActiveIndex].Equals(commitSHA, StringComparison.Ordinal))
if (Revision.SHA.StartsWith(commitSHA, StringComparison.Ordinal))
return;
if (!isBackOrForward)
{
var count = _navigationHistory.Count;
if (_navigationActiveIndex < count - 1)
_navigationHistory.RemoveRange(_navigationActiveIndex + 1, count - _navigationActiveIndex - 1);
_navigationHistory.Add(commitSHA);
_navigationActiveIndex = _navigationHistory.Count - 1;
_navigationActiveIndex++;
OnPropertyChanged(nameof(CanBack));
OnPropertyChanged(nameof(CanForward));
}
if (!Revision.SHA.StartsWith(commitSHA, StringComparison.Ordinal))
SetBlameData(commitSHA);
SetBlameData(commitSHA);
if (App.GetLauncher() is { Pages: { } pages })
{

View File

@@ -223,7 +223,7 @@ namespace SourceGit.Views
if (rect.Contains(pos))
{
if (DataContext is ViewModels.Blame blame)
blame.NavigateToCommit(info.CommitSHA);
blame.NavigateToCommit(info.CommitSHA, false);
e.Handled = true;
break;