From 4a15c6a01217e3cbae6fd93bceb59a0b063e282a Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 29 May 2013 14:28:25 +0400 Subject: [PATCH] IDEA-104500 Gradle: Allow to reuse common logic for other external systems Correct editor painting in case when it contains only collapsed fold region (used to draw empty area because selection foreground for the standard colors scheme is the same as default background and selection background was not painted because of too restrictive 'if' condition) --- .../ui/ExternalProjectPathLookupElement.java | 16 ++++++++++++++-- .../intellij/openapi/editor/impl/EditorImpl.java | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/ui/ExternalProjectPathLookupElement.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/ui/ExternalProjectPathLookupElement.java index 8490eb4d8513..a5837173aeb0 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/ui/ExternalProjectPathLookupElement.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/ui/ExternalProjectPathLookupElement.java @@ -49,12 +49,24 @@ public class ExternalProjectPathLookupElement extends LookupElement { @Override public void handleInsert(InsertionContext context) { Editor editor = context.getEditor(); + final FoldingModel foldingModel = editor.getFoldingModel(); + foldingModel.runBatchFoldingOperation(new Runnable() { + @Override + public void run() { + FoldRegion[] regions = foldingModel.getAllFoldRegions(); + for (FoldRegion region : regions) { + foldingModel.removeFoldRegion(region); + } + } + }); + final Document document = editor.getDocument(); final int startOffset = context.getStartOffset(); - document.replaceString(startOffset, context.getTailOffset(), myProjectPath); + + document.replaceString(startOffset, document.getTextLength(), myProjectPath); final Project project = context.getProject(); PsiDocumentManager.getInstance(project).commitDocument(document); - final FoldingModel foldingModel = editor.getFoldingModel(); + foldingModel.runBatchFoldingOperationDoNotCollapseCaret(new Runnable() { @Override public void run() { 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 09c4cbcd305f..8c86fe37979b 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 @@ -2199,7 +2199,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi if (hEnd >= lEnd) { FoldRegion collapsedFolderAt = myFoldingModel.getCollapsedRegionAtOffset(start); - if (collapsedFolderAt == null) { + if (collapsedFolderAt == null || collapsedFolderAt.getEndOffset() == lEnd) { position.x = drawSoftWrapAwareBackground(g, backColor, text, start, lEnd - lIterator.getSeparatorLength(), position, fontType, defaultBackground, clip, softWrapsToSkip, caretRowPainted);