From 8ec901f89d9bcdf198db82ae4346465dfeb6cb20 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 13 Oct 2017 17:34:37 +0200 Subject: [PATCH] goto implementation: compare by offset when presentations are same (IDEA-180495) --- .../intellij/codeInsight/navigation/GotoTargetHandler.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoTargetHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoTargetHandler.java index d93c60a9743e..4870f095eecf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoTargetHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/GotoTargetHandler.java @@ -40,6 +40,7 @@ import com.intellij.pom.Navigatable; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiNamedElement; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.ui.CollectionListModel; import com.intellij.ui.components.JBList; import com.intellij.ui.popup.AbstractPopup; @@ -220,7 +221,11 @@ public abstract class GotoTargetHandler implements CodeInsightActionHandler { return new Comparator() { @Override public int compare(PsiElement o1, PsiElement o2) { - return getComparingObject(o1).compareTo(getComparingObject(o2)); + int diff = getComparingObject(o1).compareTo(getComparingObject(o2)); + if (diff == 0) { + return ReadAction.compute(() -> PsiUtilCore.compareElementsByPosition(o1, o2)); + } + return diff; } private Comparable getComparingObject(PsiElement o1) {