diff --git a/java/java-impl/java-impl.iml b/java/java-impl/java-impl.iml
index c41067e99861..54da7ac1d6cc 100644
--- a/java/java-impl/java-impl.iml
+++ b/java/java-impl/java-impl.iml
@@ -5,6 +5,7 @@
+
@@ -19,7 +20,6 @@
-
diff --git a/platform/boot/boot.iml b/platform/boot/boot.iml
index fc3b39684032..30fa05efe1fa 100644
--- a/platform/boot/boot.iml
+++ b/platform/boot/boot.iml
@@ -5,8 +5,8 @@
-
+
diff --git a/platform/lang-impl/lang-impl.iml b/platform/lang-impl/lang-impl.iml
index 2613ed94031a..8826fbdf2382 100644
--- a/platform/lang-impl/lang-impl.iml
+++ b/platform/lang-impl/lang-impl.iml
@@ -6,10 +6,10 @@
+
-
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java
index e974a9b5a199..10f575a8155c 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java
@@ -3103,6 +3103,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
region.setExpanded(true);
}
});
+
+ // The call below is performed because gutter's height is not updated sometimes, i.e. it sticks to the value that corresponds
+ // to the situation when fold region is collapsed. That causes bottom of the gutter to not be repainted and that looks really ugly.
+ getGutterComponentEx().invalidate();
}
if (myMousePressedEvent != null && myMousePressedEvent.getClickCount() == 1 && myMousePressedInsideSelection) {
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java
index 4a62bc806b85..0bd2d07ea032 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CachingSoftWrapDataMapper.java
@@ -210,7 +210,7 @@ public class CachingSoftWrapDataMapper implements SoftWrapDataMapper, SoftWrapAw
int sortingKey = provider.getSortingKey();
// There is a possible case that, say, fold region is soft wrapped. We don't want to perform unnecessary then.
- if (context.offset < sortingKey) {
+ if (context.offset <= sortingKey) {
result = strategy.advance(context, sortingKey);
if (result != null) {
return result;
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManager.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManager.java
index ca2290485d68..b8b28447ffcb 100644
--- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManager.java
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManager.java
@@ -249,6 +249,8 @@ public class SoftWrapApplianceManager implements FoldingListener, DocumentListen
start = context.offset;
softWrapStartOffset = currentFold.getEndOffset();
}
+ myOffset2fontType.clear();
+ myOffset2widthInPixels.clear();
}
end = iterationState.getEndOffset();
diff --git a/platform/platform-impl/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManagerTest.java b/platform/platform-impl/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManagerTest.java
index 4c02743824dc..f12af3fca412 100644
--- a/platform/platform-impl/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManagerTest.java
+++ b/platform/platform-impl/testSrc/com/intellij/openapi/editor/impl/softwrap/mapping/SoftWrapApplianceManagerTest.java
@@ -15,11 +15,17 @@
*/
package com.intellij.openapi.editor.impl.softwrap.mapping;
+import com.intellij.openapi.editor.FoldRegion;
+import com.intellij.openapi.editor.FoldingModel;
+import com.intellij.openapi.editor.LogicalPosition;
+import com.intellij.openapi.editor.VisualPosition;
import com.intellij.openapi.editor.ex.SoftWrapModelEx;
+import com.intellij.openapi.editor.impl.FoldRegionImpl;
import com.intellij.openapi.editor.impl.SoftWrapModelImpl;
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
import java.awt.*;
+import java.io.IOException;
/**
* @author Denis Zhdanov
@@ -56,8 +62,59 @@ public class SoftWrapApplianceManagerTest extends LightPlatformCodeInsightTestCa
assertNotNull(getSoftWrapModel().getSoftWrap(offset));
}
+ public void testFoldRegionCollapsing() throws Exception {
+ String text =
+ "class Test {\n" +
+ " public void foo() {\n" +
+ " System.out.println(\"test\");\n" +
+ " }\n" +
+ "}";
+
+ init(300, text);
+ final FoldingModel foldingModel = myEditor.getFoldingModel();
+ assertEmpty(foldingModel.getAllFoldRegions());
+
+ final int startOffset = text.indexOf('{');
+ final int endOffset = text.indexOf('}') + 1;
+
+ VisualPosition foldStartPosition = myEditor.offsetToVisualPosition(startOffset);
+
+ foldingModel.runBatchFoldingOperation(new Runnable() {
+ @Override
+ public void run() {
+ foldingModel.addFoldRegion(startOffset, endOffset, "...");
+ }
+ });
+
+ final FoldRegion foldRegion = foldingModel.getAllFoldRegions()[0];
+ assertNotNull(foldRegion);
+ assertTrue(foldRegion.isExpanded());
+ foldingModel.runBatchFoldingOperation(new Runnable() {
+ @Override
+ public void run() {
+ foldRegion.setExpanded(false);
+ }
+ });
+
+ // Expecting that all offsets that belong to collapsed fold region point to the region's start.
+ assertEquals(foldStartPosition, myEditor.offsetToVisualPosition(startOffset + 5));
+ }
+
private void init(final int visibleWidth) throws Exception {
- configureByFile(PATH + getTestName(false) + ".txt");
+ configureByFile(PATH + getFileName());
+ initCommon(visibleWidth);
+ }
+
+ private void init(int visibleWidth, String fileText) throws IOException {
+ configureFromFileText(getFileName(), fileText);
+ initCommon(visibleWidth);
+ }
+
+ private String getFileName() {
+ return getTestName(false) + ".txt";
+ }
+
+ private static void initCommon(final int visibleWidth) {
myEditor.getSettings().setUseSoftWraps(true);
SoftWrapModelImpl model = (SoftWrapModelImpl)myEditor.getSoftWrapModel();
model.refreshSettings();
diff --git a/plugins/properties/properties.iml b/plugins/properties/properties.iml
index bc387eeb3f60..cec4a8781319 100644
--- a/plugins/properties/properties.iml
+++ b/plugins/properties/properties.iml
@@ -7,13 +7,13 @@
+
-