diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java
index 7efe023d1ab4..d6f3f221176c 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java
@@ -24,6 +24,7 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.TextEditor;
+import com.intellij.openapi.fileEditor.impl.EditorHistoryManager;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.PopupChooserBuilder;
import com.intellij.openapi.util.TextRange;
@@ -100,8 +101,13 @@ public final class NavigationUtil {
VirtualFile vFile = file.getVirtualFile();
if (vFile == null) return false;
+ if (!EditorHistoryManager.getInstance(elt.getProject()).hasBeenOpen(vFile)) return false;
+
final FileEditorManager fem = FileEditorManager.getInstance(elt.getProject());
- if (!fem.isFileOpen(vFile)) return false;
+ if (!fem.isFileOpen(vFile)) {
+ fem.openFile(vFile, true);
+ return true;
+ }
final TextRange range = elt.getTextRange();
if (range == null) return false;
diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java
index 619ae78e7d40..4df6aefd91bc 100644
--- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java
+++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java
@@ -229,6 +229,13 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
return result;
}
+ public boolean hasBeenOpen(@NotNull VirtualFile f) {
+ for (HistoryEntry each : myEntriesList) {
+ if (each.myFile == f) return true;
+ }
+ return false;
+ }
+
/**
* Removes specified file from history. The method does
* nothing if file is not in the history.