@@ -516,11 +516,16 @@ public void GotoPrevChange()
516516 firstLineIdx = index ;
517517 }
518518
519+ if ( firstLineIdx <= 1 )
520+ return ;
521+
519522 var firstLineType = lines [ firstLineIdx ] . Type ;
523+ var prevLineType = lines [ firstLineIdx - 1 ] . Type ;
520524 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 )
522527 {
523- for ( var i = firstLineIdx - 1 ; i >= 0 ; i -- )
528+ for ( var i = firstLineIdx - 2 ; i >= 0 ; i -- )
524529 {
525530 var prevType = lines [ i ] . Type ;
526531 if ( prevType == Models . TextDiffLineType . Normal || prevType == Models . TextDiffLineType . Indicator )
@@ -530,33 +535,23 @@ public void GotoPrevChange()
530535 }
531536 }
532537 }
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- }
547538
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 )
552544 {
553- var prevType = lines [ i ] . Type ;
554- if ( prevType == Models . TextDiffLineType . Normal || prevType == Models . TextDiffLineType . Indicator )
545+ if ( findChange )
555546 {
556547 ScrollToLine ( i + 2 ) ;
557548 return ;
558549 }
559550 }
551+ else if ( ! findChange )
552+ {
553+ findChange = true ;
554+ }
560555 }
561556 }
562557
@@ -578,6 +573,9 @@ public void GotoNextChange()
578573 lastLineIdx = index ;
579574 }
580575
576+ if ( lastLineIdx >= lines . Count - 1 )
577+ return ;
578+
581579 var lastLineType = lines [ lastLineIdx ] . Type ;
582580 var findNormalLine = lastLineType == Models . TextDiffLineType . Normal || lastLineType == Models . TextDiffLineType . Indicator ;
583581 for ( var idx = lastLineIdx + 1 ; idx < lines . Count ; idx ++ )
0 commit comments