- Project project = element.getProject();
- IdeDocumentHistory.getInstance(project).includeCurrentCommandAsNavigation();
- new OpenFileDescriptor(project, currentFile.getViewProvider().getVirtualFile(), element.getTextOffset()).navigateIn(currentEditor);
- return;
+ int offset = element.getTextOffset();
+ PsiElement leaf = currentFile.findElementAt(offset);
+ // check that element is really physically inside the file
+ // there are fake elements with custom navigation (e.g. opening URL in browser) that override getContainingFile for various reasons
+ if (leaf != null && PsiTreeUtil.isAncestor(element, leaf, false)) {
+ Project project = element.getProject();
+ IdeDocumentHistory.getInstance(project).includeCurrentCommandAsNavigation();
+ new OpenFileDescriptor(project, currentFile.getViewProvider().getVirtualFile(), offset).navigateIn(currentEditor);
+ return;
+ }