@@ -76,7 +76,7 @@ public void Back()
76
76
_navigationActiveIndex -- ;
77
77
OnPropertyChanged ( nameof ( CanBack ) ) ;
78
78
OnPropertyChanged ( nameof ( CanForward ) ) ;
79
- NavigateToCommit ( _navigationHistory [ _navigationActiveIndex ] ) ;
79
+ NavigateToCommit ( _navigationHistory [ _navigationActiveIndex ] , true ) ;
80
80
}
81
81
82
82
public void Forward ( )
@@ -87,21 +87,27 @@ public void Forward()
87
87
_navigationActiveIndex ++ ;
88
88
OnPropertyChanged ( nameof ( CanBack ) ) ;
89
89
OnPropertyChanged ( nameof ( CanForward ) ) ;
90
- NavigateToCommit ( _navigationHistory [ _navigationActiveIndex ] ) ;
90
+ NavigateToCommit ( _navigationHistory [ _navigationActiveIndex ] , true ) ;
91
91
}
92
92
93
- public void NavigateToCommit ( string commitSHA )
93
+ public void NavigateToCommit ( string commitSHA , bool isBackOrForward )
94
94
{
95
- if ( ! _navigationHistory [ _navigationActiveIndex ] . Equals ( commitSHA , StringComparison . Ordinal ) )
95
+ if ( Revision . SHA . StartsWith ( commitSHA , StringComparison . Ordinal ) )
96
+ return ;
97
+
98
+ if ( ! isBackOrForward )
96
99
{
100
+ var count = _navigationHistory . Count ;
101
+ if ( _navigationActiveIndex < count - 1 )
102
+ _navigationHistory . RemoveRange ( _navigationActiveIndex + 1 , count - _navigationActiveIndex - 1 ) ;
103
+
97
104
_navigationHistory . Add ( commitSHA ) ;
98
- _navigationActiveIndex = _navigationHistory . Count - 1 ;
105
+ _navigationActiveIndex ++ ;
99
106
OnPropertyChanged ( nameof ( CanBack ) ) ;
100
107
OnPropertyChanged ( nameof ( CanForward ) ) ;
101
108
}
102
109
103
- if ( ! Revision . SHA . StartsWith ( commitSHA , StringComparison . Ordinal ) )
104
- SetBlameData ( commitSHA ) ;
110
+ SetBlameData ( commitSHA ) ;
105
111
106
112
if ( App . GetLauncher ( ) is { Pages : { } pages } )
107
113
{
0 commit comments