diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteFoldingProcessor.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteFoldingProcessor.java index 350f8550566b..e9470d805bea 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteFoldingProcessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteFoldingProcessor.java @@ -16,19 +16,20 @@ package com.intellij.codeInsight.editorActions; +import com.intellij.codeInsight.folding.CodeFoldingManager; +import com.intellij.codeInsight.folding.impl.CodeFoldingManagerImpl; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.FoldRegion; import com.intellij.openapi.editor.RangeMarker; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; -import com.intellij.codeInsight.folding.CodeFoldingManager; import org.jetbrains.annotations.Nullable; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; -import java.util.ArrayList; import java.io.IOException; +import java.util.ArrayList; public class CopyPasteFoldingProcessor implements CopyPastePostProcessor { @@ -66,8 +67,10 @@ public class CopyPasteFoldingProcessor implements CopyPastePostProcessor { } } catch (UnsupportedFlavorException e) { + // do nothing } catch (IOException e) { + // do nothing } if (foldingData != null) { // copy to prevent changing of original by convertLineSeparators @@ -77,10 +80,10 @@ public class CopyPasteFoldingProcessor implements CopyPastePostProcessor { } public void processTransferableData(final Project project, final Editor editor, final RangeMarker bounds, final TextBlockTransferableData value) { - final CodeFoldingManager foldingManager = CodeFoldingManager.getInstance(project); - foldingManager.updateFoldRegions(editor); + final CodeFoldingManagerImpl foldingManager = (CodeFoldingManagerImpl)CodeFoldingManager.getInstance(project); + foldingManager.updateFoldRegions(editor, true); - Runnable processor1 = new Runnable() { + Runnable operation = new Runnable() { public void run() { for (FoldingTransferableData.FoldingData data : ((FoldingTransferableData) value).getData()) { FoldRegion region = foldingManager.findFoldRegion(editor, data.startOffset + bounds.getStartOffset(), data.endOffset + bounds.getStartOffset()); @@ -90,6 +93,6 @@ public class CopyPasteFoldingProcessor implements CopyPastePostProcessor { } } }; - editor.getFoldingModel().runBatchFoldingOperation(processor1); + editor.getFoldingModel().runBatchFoldingOperation(operation); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java index 3dca0c9f3c69..beaed335d955 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CodeFoldingManagerImpl.java @@ -206,8 +206,12 @@ public class CodeFoldingManagerImpl extends CodeFoldingManager implements Projec } public void updateFoldRegions(@NotNull Editor editor) { + updateFoldRegions(editor, false); + } + + public void updateFoldRegions(Editor editor, boolean quick) { PsiDocumentManager.getInstance(myProject).commitDocument(editor.getDocument()); - Runnable runnable = updateFoldRegions(editor, false, false); + Runnable runnable = updateFoldRegions(editor, false, quick); if (runnable != null) { runnable.run(); }