From cf1e7bb5e93cd361d6521f110f4387ef41e99ccc Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 16 Apr 2015 15:23:34 +0300 Subject: [PATCH] diff: fix foldings at the start/end of file inner foldings shouldn't expand and show the unchanged beginning of the file --- .../diff/tools/util/FoldingModelSupport.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java index 3e7f1d20b739..76e2baf88284 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java @@ -161,15 +161,18 @@ public class FoldingModelSupport { private void addRange(int[] starts, int[] ends) { List result = new ArrayList(3); + int[] rangeStarts = new int[myCount]; + int[] rangeEnds = new int[myCount]; + for (int number = 0; ; number++) { int shift = getRangeShift(mySettings.range, number); if (shift == -1) break; for (int i = 0; i < myCount; i++) { - starts[i] = bound(starts[i] + shift, i); - ends[i] = bound(ends[i] - shift, i); + rangeStarts[i] = bound(starts[i] + shift, i); + rangeEnds[i] = bound(ends[i] - shift, i); } - ContainerUtil.addAllNotNull(result, createRange(starts, ends, myExpandSuggester.isExpanded(starts, ends))); + ContainerUtil.addAllNotNull(result, createRange(rangeStarts, rangeEnds, myExpandSuggester.isExpanded(rangeStarts, rangeEnds))); } if (result.size() > 0) { @@ -700,20 +703,17 @@ public class FoldingModelSupport { // /* - * number: - * 0: unchanged -> first folding - * 1: first folding-> second folding - * ... - * -1 - end + * number - depth of folding insertion (from zero) + * return: number of context lines. ('-1' - end) */ private static int getRangeShift(int range, int number) { switch (number) { case 0: return range; case 1: - return range; - case 2: return range * 2; + case 2: + return range * 4; default: return -1; }