@@ -1159,10 +1159,10 @@ public void FillContextMenuForWorkingCopyChange(ContextMenu menu, int startLine,
1159
1159
if ( startLine > endLine )
1160
1160
( startLine , endLine ) = ( endLine , startLine ) ;
1161
1161
1162
- if ( UseSideBySideDiff )
1163
- ( startLine , endLine ) = GetUnifiedRange ( diff , startLine , endLine , isOldSide ) ;
1162
+ if ( Editor . Content is ViewModels . TwoSideTextDiff twoSides )
1163
+ twoSides . ConvertsToCombinedRange ( diff , ref startLine , ref endLine , isOldSide ) ;
1164
1164
1165
- var selection = MakeSelection ( diff , startLine , endLine , ! UseSideBySideDiff , isOldSide ) ;
1165
+ var selection = diff . MakeSelection ( startLine , endLine , UseSideBySideDiff , isOldSide ) ;
1166
1166
if ( ! selection . HasChanges )
1167
1167
return ;
1168
1168
@@ -1429,7 +1429,7 @@ private void OnStageChunk(object sender, RoutedEventArgs e)
1429
1429
if ( change == null )
1430
1430
return ;
1431
1431
1432
- var selection = MakeSelection ( diff , chunk . StartIdx + 1 , chunk . EndIdx + 1 , true , false ) ;
1432
+ var selection = diff . MakeSelection ( chunk . StartIdx + 1 , chunk . EndIdx + 1 , false , false ) ;
1433
1433
if ( ! selection . HasChanges )
1434
1434
return ;
1435
1435
@@ -1487,7 +1487,7 @@ private void OnUnstageChunk(object sender, RoutedEventArgs e)
1487
1487
if ( change == null )
1488
1488
return ;
1489
1489
1490
- var selection = MakeSelection ( diff , chunk . StartIdx + 1 , chunk . EndIdx + 1 , true , false ) ;
1490
+ var selection = diff . MakeSelection ( chunk . StartIdx + 1 , chunk . EndIdx + 1 , false , false ) ;
1491
1491
if ( ! selection . HasChanges )
1492
1492
return ;
1493
1493
@@ -1543,7 +1543,7 @@ private void OnDiscardChunk(object sender, RoutedEventArgs e)
1543
1543
if ( change == null )
1544
1544
return ;
1545
1545
1546
- var selection = MakeSelection ( diff , chunk . StartIdx + 1 , chunk . EndIdx + 1 , true , false ) ;
1546
+ var selection = diff . MakeSelection ( chunk . StartIdx + 1 , chunk . EndIdx + 1 , false , false ) ;
1547
1547
if ( ! selection . HasChanges )
1548
1548
return ;
1549
1549
@@ -1588,122 +1588,5 @@ private void OnDiscardChunk(object sender, RoutedEventArgs e)
1588
1588
repo . SetWatcherEnabled ( true ) ;
1589
1589
}
1590
1590
}
1591
-
1592
- private ( int , int ) GetUnifiedRange ( Models . TextDiff diff , int startLine , int endLine , bool isOldSide )
1593
- {
1594
- endLine = Math . Min ( endLine , diff . Lines . Count ) ;
1595
- if ( Editor . Content is ViewModels . TwoSideTextDiff twoSides )
1596
- {
1597
- var target = isOldSide ? twoSides . Old : twoSides . New ;
1598
- var firstContentLine = - 1 ;
1599
- for ( int i = startLine - 1 ; i < endLine ; i ++ )
1600
- {
1601
- var line = target [ i ] ;
1602
- if ( line . Type != Models . TextDiffLineType . None )
1603
- {
1604
- firstContentLine = i ;
1605
- break ;
1606
- }
1607
- }
1608
-
1609
- if ( firstContentLine < 0 )
1610
- return ( - 1 , - 1 ) ;
1611
-
1612
- var endContentLine = - 1 ;
1613
- for ( int i = Math . Min ( endLine - 1 , target . Count - 1 ) ; i >= startLine - 1 ; i -- )
1614
- {
1615
- var line = target [ i ] ;
1616
- if ( line . Type != Models . TextDiffLineType . None )
1617
- {
1618
- endContentLine = i ;
1619
- break ;
1620
- }
1621
- }
1622
-
1623
- if ( endContentLine < 0 )
1624
- return ( - 1 , - 1 ) ;
1625
-
1626
- var firstContent = target [ firstContentLine ] ;
1627
- var endContent = target [ endContentLine ] ;
1628
- startLine = diff . Lines . IndexOf ( firstContent ) + 1 ;
1629
- endLine = diff . Lines . IndexOf ( endContent ) + 1 ;
1630
- }
1631
-
1632
- return ( startLine , endLine ) ;
1633
- }
1634
-
1635
- private Models . TextDiffSelection MakeSelection ( Models . TextDiff diff , int startLine , int endLine , bool combined , bool isOldSide )
1636
- {
1637
- var rs = new Models . TextDiffSelection ( ) ;
1638
- rs . StartLine = startLine ;
1639
- rs . EndLine = endLine ;
1640
-
1641
- for ( int i = 0 ; i < startLine - 1 ; i ++ )
1642
- {
1643
- var line = diff . Lines [ i ] ;
1644
- if ( line . Type == Models . TextDiffLineType . Added )
1645
- {
1646
- rs . HasLeftChanges = true ;
1647
- rs . IgnoredAdds ++ ;
1648
- }
1649
- else if ( line . Type == Models . TextDiffLineType . Deleted )
1650
- {
1651
- rs . HasLeftChanges = true ;
1652
- rs . IgnoredDeletes ++ ;
1653
- }
1654
- }
1655
-
1656
- for ( int i = startLine - 1 ; i < endLine ; i ++ )
1657
- {
1658
- var line = diff . Lines [ i ] ;
1659
- if ( line . Type == Models . TextDiffLineType . Added )
1660
- {
1661
- if ( combined )
1662
- {
1663
- rs . HasChanges = true ;
1664
- break ;
1665
- }
1666
- else if ( isOldSide )
1667
- {
1668
- rs . HasLeftChanges = true ;
1669
- }
1670
- else
1671
- {
1672
- rs . HasChanges = true ;
1673
- }
1674
- }
1675
- else if ( line . Type == Models . TextDiffLineType . Deleted )
1676
- {
1677
- if ( combined )
1678
- {
1679
- rs . HasChanges = true ;
1680
- break ;
1681
- }
1682
- else if ( isOldSide )
1683
- {
1684
- rs . HasChanges = true ;
1685
- }
1686
- else
1687
- {
1688
- rs . HasLeftChanges = true ;
1689
- }
1690
- }
1691
- }
1692
-
1693
- if ( ! rs . HasLeftChanges )
1694
- {
1695
- for ( int i = endLine ; i < diff . Lines . Count ; i ++ )
1696
- {
1697
- var line = diff . Lines [ i ] ;
1698
- if ( line . Type == Models . TextDiffLineType . Added || line . Type == Models . TextDiffLineType . Deleted )
1699
- {
1700
- rs . HasLeftChanges = true ;
1701
- break ;
1702
- }
1703
- }
1704
- }
1705
-
1706
- return rs ;
1707
- }
1708
1591
}
1709
1592
}
0 commit comments