From aba01014f77feb97acd266c53ad919e6c0f22161 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 15 Jun 2015 19:51:33 +0300 Subject: [PATCH] diff from console: use original component from relative point available when constructed from MouseEvent only (IDEA-140347) --- .../execution/impl/EditorHyperlinkSupport.java | 5 +++-- .../testframework/stacktrace/DiffHyperlink.java | 14 +++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java b/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java index 36da53448c7b..00aba68c73db 100644 --- a/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java +++ b/platform/platform-impl/src/com/intellij/execution/impl/EditorHyperlinkSupport.java @@ -135,8 +135,9 @@ public class EditorHyperlinkSupport { @Override public void run() { if (hyperlinkInfo instanceof HyperlinkInfoBase) { - RelativePoint point = new RelativePoint(myEditor.getContentComponent(), myEditor.logicalPositionToXY(logical)); - ((HyperlinkInfoBase)hyperlinkInfo).navigate(myProject, point); + final Point point = myEditor.logicalPositionToXY(logical); + final MouseEvent event = new MouseEvent(myEditor.getContentComponent(), 0, 0, 0, point.x, point.y, 1, false); + ((HyperlinkInfoBase)hyperlinkInfo).navigate(myProject, new RelativePoint(event)); } else { hyperlinkInfo.navigate(myProject); diff --git a/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java b/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java index 8e9de796ed4a..8fb1c8c75faa 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/stacktrace/DiffHyperlink.java @@ -22,6 +22,7 @@ package com.intellij.execution.testframework.stacktrace; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.filters.HyperlinkInfo; +import com.intellij.execution.filters.HyperlinkInfoBase; import com.intellij.execution.testframework.AbstractTestProxy; import com.intellij.execution.testframework.Printable; import com.intellij.execution.testframework.Printer; @@ -31,6 +32,9 @@ import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; +import com.intellij.ui.awt.RelativePoint; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; @@ -135,9 +139,13 @@ public class DiffHyperlink implements Printable { return result; } - public class DiffHyperlinkInfo implements HyperlinkInfo { - public void navigate(final Project project) { - ViewAssertEqualsDiffAction.openDiff(DataManager.getInstance().getDataContext(), DiffHyperlink.this); + public class DiffHyperlinkInfo extends HyperlinkInfoBase { + @Override + public void navigate(@NotNull Project project, @Nullable RelativePoint hyperlinkLocationPoint) { + final DataManager dataManager = DataManager.getInstance(); + final DataContext dataContext = hyperlinkLocationPoint != null ? + dataManager.getDataContext(hyperlinkLocationPoint.getOriginalComponent()) : dataManager.getDataContext(); + ViewAssertEqualsDiffAction.openDiff(dataContext, DiffHyperlink.this); } public DiffHyperlink getPrintable() {