From 65970e0dd6641f7fbfb0593ae286b3f5122571c4 Mon Sep 17 00:00:00 2001 From: Petr Kudriavtsev Date: Thu, 14 Dec 2017 14:01:21 +0300 Subject: [PATCH] Fixing CPP-11457: Navigation between marked occurrences - when caret leaves the visible area, scroll view area in the way so that caret is in the center --- .../GotoElementUnderCaretUsageBase.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/actions/GotoElementUnderCaretUsageBase.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/actions/GotoElementUnderCaretUsageBase.java index e3690da286f4..ea447c41f0fa 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/actions/GotoElementUnderCaretUsageBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/actions/GotoElementUnderCaretUsageBase.java @@ -7,15 +7,13 @@ import com.intellij.codeInsight.CodeInsightActionHandler; import com.intellij.codeInsight.actions.BaseCodeInsightAction; import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx; import com.intellij.codeInsight.daemon.impl.HighlightInfoType; -import com.intellij.openapi.editor.Caret; -import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.EditorModificationUtil; +import com.intellij.openapi.editor.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import java.awt.*; import java.util.Comparator; /*package*/ abstract class GotoElementUnderCaretUsageBase extends BaseCodeInsightAction implements CodeInsightActionHandler { @@ -58,9 +56,9 @@ import java.util.Comparator; return true; }); if (!next.isNull()) { - moveCaret(editor, editor.getCaretModel().getCurrentCaret(), next.get()); + moveCaret(editor, next.get()); } else if (!first.isNull()) { - moveCaret(editor, editor.getCaretModel().getCurrentCaret(), first.get()); + moveCaret(editor, first.get()); } else { // It's ok, do nothing. } @@ -71,10 +69,13 @@ import java.util.Comparator; return false; } - private static void moveCaret(Editor editor, Caret caret, int offset) { + private static void moveCaret(Editor editor, int toOffset) { + Caret caret = editor.getCaretModel().getCurrentCaret(); caret.removeSelection(); - caret.moveToOffset(offset); - EditorModificationUtil.scrollToCaret(editor); + caret.moveToOffset(toOffset); + if (caret == editor.getCaretModel().getPrimaryCaret()) { + editor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); + } } protected enum Direction {