mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-23 10:22:13 +08:00
enhance: better undo/redo history in blame (#1686)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -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 })
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user