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.