From fe465cb4252c54fb95f71eba3e8f76b52408e6db Mon Sep 17 00:00:00 2001 From: andrey zaytsev Date: Mon, 28 Feb 2011 17:13:14 +0300 Subject: [PATCH] IDEA-65667: manually expand folding blocks before putting selection there --- .../livePreview/LivePreviewControllerBase.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewControllerBase.java b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewControllerBase.java index 94c344b19124..e381e2c2427f 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewControllerBase.java +++ b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewControllerBase.java @@ -5,9 +5,7 @@ import com.intellij.find.FindModel; import com.intellij.find.FindUtil; import com.intellij.find.impl.FindResultImpl; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.ScrollType; -import com.intellij.openapi.editor.SelectionModel; +import com.intellij.openapi.editor.*; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.util.Alarm; @@ -38,6 +36,20 @@ public class LivePreviewControllerBase implements LivePreview.Delegate, FindUtil LiveOccurrence cursor = mySearchResults.getCursor(); if (cursor != null) { TextRange range = cursor.getPrimaryRange(); + FoldingModel foldingModel = editor.getFoldingModel(); + final FoldRegion startFolding = foldingModel.getCollapsedRegionAtOffset(range.getStartOffset()); + final FoldRegion endFolding = foldingModel.getCollapsedRegionAtOffset(range.getEndOffset()); + foldingModel.runBatchFoldingOperation(new Runnable() { + @Override + public void run() { + if (startFolding != null) { + startFolding.setExpanded(true); + } + if (endFolding != null) { + endFolding.setExpanded(true); + } + } + }); selection.setSelection(range.getStartOffset(), range.getEndOffset()); editor.getCaretModel().moveToOffset(range.getEndOffset());