@@ -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 {
0 commit comments