diff --git a/platform/lang-api/src/com/intellij/codeInsight/daemon/LineMarkerInfo.java b/platform/lang-api/src/com/intellij/codeInsight/daemon/LineMarkerInfo.java index c944eec2ffb4..454e396c268a 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/daemon/LineMarkerInfo.java +++ b/platform/lang-api/src/com/intellij/codeInsight/daemon/LineMarkerInfo.java @@ -35,7 +35,7 @@ import java.awt.event.MouseEvent; import java.lang.ref.WeakReference; public class LineMarkerInfo { - private final Icon myIcon; + protected final Icon myIcon; private final WeakReference elementRef; public final int startOffset; public final int endOffset; @@ -157,7 +157,7 @@ public class LineMarkerInfo { return myInfo.myIconAlignment; } - private boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) { + protected boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) { return myInfo.getElement() != null && renderer.myInfo.getElement() != null && diff --git a/platform/lang-api/src/com/intellij/codeInsight/daemon/RelatedItemLineMarkerInfo.java b/platform/lang-api/src/com/intellij/codeInsight/daemon/RelatedItemLineMarkerInfo.java index 9889bdf263a8..55ce601e8943 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/daemon/RelatedItemLineMarkerInfo.java +++ b/platform/lang-api/src/com/intellij/codeInsight/daemon/RelatedItemLineMarkerInfo.java @@ -60,4 +60,27 @@ public class RelatedItemLineMarkerInfo extends LineMarkerI public Collection createGotoRelatedItems() { return myTargets.getValue(); } + + @Override + public GutterIconRenderer createGutterRenderer() { + if (myIcon == null) return null; + return new RelatedItemLineMarkerGutterIconRenderer(this); + } + + private static class RelatedItemLineMarkerGutterIconRenderer extends LineMarkerGutterIconRenderer { + public RelatedItemLineMarkerGutterIconRenderer(final RelatedItemLineMarkerInfo markerInfo) { + super(markerInfo); + } + + @Override + protected boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) { + if (!(renderer instanceof RelatedItemLineMarkerGutterIconRenderer) || !super.looksTheSameAs(renderer)) { + return false; + } + + final RelatedItemLineMarkerInfo markerInfo = (RelatedItemLineMarkerInfo)getLineMarkerInfo(); + final RelatedItemLineMarkerInfo otherInfo = (RelatedItemLineMarkerInfo)renderer.getLineMarkerInfo(); + return markerInfo.myTargets.equals(otherInfo.myTargets); + } + } }