@@ -516,11 +516,16 @@ public void GotoPrevChange()
516
516
firstLineIdx = index ;
517
517
}
518
518
519
+ if ( firstLineIdx <= 1 )
520
+ return ;
521
+
519
522
var firstLineType = lines [ firstLineIdx ] . Type ;
523
+ var prevLineType = lines [ firstLineIdx - 1 ] . Type ;
520
524
var isChangeFirstLine = firstLineType != Models . TextDiffLineType . Normal && firstLineType != Models . TextDiffLineType . Indicator ;
521
- if ( isChangeFirstLine )
525
+ var isChangePrevLine = prevLineType != Models . TextDiffLineType . Normal && prevLineType != Models . TextDiffLineType . Indicator ;
526
+ if ( isChangeFirstLine && isChangePrevLine )
522
527
{
523
- for ( var i = firstLineIdx - 1 ; i >= 0 ; i -- )
528
+ for ( var i = firstLineIdx - 2 ; i >= 0 ; i -- )
524
529
{
525
530
var prevType = lines [ i ] . Type ;
526
531
if ( prevType == Models . TextDiffLineType . Normal || prevType == Models . TextDiffLineType . Indicator )
@@ -530,33 +535,23 @@ public void GotoPrevChange()
530
535
}
531
536
}
532
537
}
533
- else
534
- {
535
- var prevChangeEnd = - 1 ;
536
- for ( var i = firstLineIdx - 1 ; i >= 0 ; i -- )
537
- {
538
- var prevType = lines [ i ] . Type ;
539
- if ( prevType == Models . TextDiffLineType . None ||
540
- prevType == Models . TextDiffLineType . Added ||
541
- prevType == Models . TextDiffLineType . Deleted )
542
- {
543
- prevChangeEnd = i ;
544
- break ;
545
- }
546
- }
547
538
548
- if ( prevChangeEnd <= 0 )
549
- return ;
550
-
551
- for ( var i = prevChangeEnd - 1 ; i >= 0 ; i -- )
539
+ var findChange = false ;
540
+ for ( var i = firstLineIdx - 1 ; i >= 0 ; i -- )
541
+ {
542
+ var prevType = lines [ i ] . Type ;
543
+ if ( prevType == Models . TextDiffLineType . Normal || prevType == Models . TextDiffLineType . Indicator )
552
544
{
553
- var prevType = lines [ i ] . Type ;
554
- if ( prevType == Models . TextDiffLineType . Normal || prevType == Models . TextDiffLineType . Indicator )
545
+ if ( findChange )
555
546
{
556
547
ScrollToLine ( i + 2 ) ;
557
548
return ;
558
549
}
559
550
}
551
+ else if ( ! findChange )
552
+ {
553
+ findChange = true ;
554
+ }
560
555
}
561
556
}
562
557
@@ -578,6 +573,9 @@ public void GotoNextChange()
578
573
lastLineIdx = index ;
579
574
}
580
575
576
+ if ( lastLineIdx >= lines . Count - 1 )
577
+ return ;
578
+
581
579
var lastLineType = lines [ lastLineIdx ] . Type ;
582
580
var findNormalLine = lastLineType == Models . TextDiffLineType . Normal || lastLineType == Models . TextDiffLineType . Indicator ;
583
581
for ( var idx = lastLineIdx + 1 ; idx < lines . Count ; idx ++ )
0 commit comments