IDEA-64687 Impossible to add an import statement when import section is collapsed

This commit is contained in:
peter
2011-01-27 19:37:04 +01:00
parent cef9eee6b4
commit 8697922e41
2 changed files with 31 additions and 9 deletions
@@ -15,8 +15,10 @@
*/
package com.intellij.codeInsight.folding;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
import com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl
import com.intellij.openapi.application.ex.PathManagerEx
import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase
/**
* @author Denis Zhdanov
@@ -25,12 +27,26 @@ import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
public class JavaFoldingTest extends CodeInsightFixtureTestCase {
public void testEndOfLineComments() {
doTest();
myFixture.testFolding("$PathManagerEx.testDataPath/codeInsight/folding/${getTestName(false)}.java");
}
private void doTest() {
StringBuilder path = new StringBuilder(PathManagerEx.getTestDataPath()).append("/codeInsight/folding/")
.append(getTestName(false)).append(".java");
myFixture.testFolding(path.toString());
public void testEditingImports() {
myFixture.configureByText "a.java", """\
import java.util.List;
import java.util.Map;
<caret>
class Foo { List a; Map b; }
"""
CodeFoldingManagerImpl.getInstance(getProject()).buildInitialFoldings(myFixture.editor);
myFixture.doHighlighting()
assert myFixture.editor.foldingModel.getCollapsedRegionAtOffset(10)
myFixture.type 'import '
myFixture.doHighlighting()
assert !myFixture.editor.foldingModel.getCollapsedRegionAtOffset(10)
}
}
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.folding.impl;
import com.intellij.lang.folding.FoldingDescriptor;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.editor.FoldingGroup;
@@ -124,7 +125,12 @@ class UpdateFoldRegionsOperation implements Runnable {
}
private boolean shouldExpandNewRegion(PsiElement element, TextRange range, Map<TextRange, Boolean> rangeToExpandStatusMap) {
boolean caretInside = FoldingUtil.caretInsideRange(myEditor, range);
final Document document = myEditor.getDocument();
final int firstLine = document.getLineNumber(range.getStartOffset());
final int lastLine = document.getLineNumber(range.getEndOffset());
final int currentLine = document.getLineNumber(myEditor.getCaretModel().getOffset());
boolean caretInside = firstLine <= currentLine && currentLine <= lastLine;
if (myApplyDefaultState) {
return caretInside || !FoldingPolicy.isCollapseByDefault(element);
}