diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java index 709dd9add69a..d8b931009f43 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java @@ -45,7 +45,6 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.ListIterator; @@ -344,7 +343,7 @@ public class LineStatusTracker { myFirstChangedLine = firstChangedRange.getOffset1(); } if (lastChangedRange != null && lastChangedRange.getOffset2() > myLastChangedLine) { - myLastChangedLine = lastChangedRange.getOffset2(); + myLastChangedLine = lastChangedRange.getOffset2() - 1; } int currentFirstLine = myFirstChangedLine; @@ -360,14 +359,12 @@ public class LineStatusTracker { if (!changedRanges.equals(newChangedRanges)) { replaceRanges(changedRanges, newChangedRanges); - myRanges = new ArrayList(); + myRanges = new ArrayList(rangesBeforeChange.size() + newChangedRanges.size() + rangesAfterChange.size()); myRanges.addAll(rangesBeforeChange); myRanges.addAll(newChangedRanges); myRanges.addAll(rangesAfterChange); - myRanges = mergeRanges(myRanges); - for (Range range : myRanges) { if (!range.hasHighlighter()) range.setHighlighter(createHighlighter(range)); } @@ -414,32 +411,6 @@ public class LineStatusTracker { return new RangesBuilder(lines, uLines, firstChangedLine, upToDateFirstLine).getRanges(); } - @NotNull - private List mergeRanges(@NotNull List ranges) { - ArrayList result = new ArrayList(); - Iterator iterator = ranges.iterator(); - if (!iterator.hasNext()) return result; - Range prev = iterator.next(); - while (iterator.hasNext()) { - Range range = iterator.next(); - if (prev.canBeMergedWith(range)) { - if (range.getHighlighter() != null) { - range.getHighlighter().dispose(); - } - if (prev.getHighlighter() != null) { - prev.getHighlighter().dispose(); - } - prev = prev.mergeWith(range); - } - else { - result.add(prev); - prev = range; - } - } - result.add(prev); - return result; - } - private void replaceRanges(@NotNull List rangesInChange, @NotNull List newRangesInChange) { for (Range range : rangesInChange) { if (range.getHighlighter() != null) {