From ee09c8d4e9ba144f1e9c87caac555c89ccdb2228 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 15 Sep 2016 16:41:34 +0200 Subject: [PATCH] IDEA-159829 when editing in find result previews the cursor jumps some number of characters after insertion --- .../src/com/intellij/usages/impl/UsagePreviewPanel.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/usageView/src/com/intellij/usages/impl/UsagePreviewPanel.java b/platform/usageView/src/com/intellij/usages/impl/UsagePreviewPanel.java index c0c5035261c6..92fc9d051e04 100644 --- a/platform/usageView/src/com/intellij/usages/impl/UsagePreviewPanel.java +++ b/platform/usageView/src/com/intellij/usages/impl/UsagePreviewPanel.java @@ -27,6 +27,7 @@ import com.intellij.openapi.editor.impl.SettingsImpl; import com.intellij.openapi.editor.impl.softwrap.SoftWrapAppliancePlaces; import com.intellij.openapi.editor.markup.*; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; @@ -51,6 +52,7 @@ public class UsagePreviewPanel extends UsageContextPanelBase implements DataProv private Editor myEditor; private final boolean myIsEditor; private int myLineHeight; + private List myCachedSelectedUsageInfos; public UsagePreviewPanel(@NotNull Project project, @NotNull UsageViewPresentation presentation) { this(project, presentation, false); @@ -118,7 +120,10 @@ public class UsagePreviewPanel extends UsageContextPanelBase implements DataProv validate(); } - highlight(infos, myEditor, myProject, true, HighlighterLayer.ADDITIONAL_SYNTAX); + if (!Comparing.equal(infos, myCachedSelectedUsageInfos)) { // avoid moving viewport + highlight(infos, myEditor, myProject, true, HighlighterLayer.ADDITIONAL_SYNTAX); + myCachedSelectedUsageInfos = infos; + } } public int getLineHeight() { @@ -217,6 +222,7 @@ public class UsagePreviewPanel extends UsageContextPanelBase implements DataProv if (myEditor != null) { EditorFactory.getInstance().releaseEditor(myEditor); myEditor = null; + myCachedSelectedUsageInfos = null; } }