From 39b70dc9ec4a9c7b48f5e15eed162a098ebcbbb5 Mon Sep 17 00:00:00 2001 From: "Dmitry.Krasilschikov" Date: Tue, 8 Aug 2017 18:30:09 +0300 Subject: [PATCH] RUBY-19479 prefer an active project along found for a virtual file projects --- .../src/com/intellij/openapi/project/ProjectUtil.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/openapi/project/ProjectUtil.kt b/platform/platform-api/src/com/intellij/openapi/project/ProjectUtil.kt index 2f0cc1f04434..83d75c6b584c 100644 --- a/platform/platform-api/src/com/intellij/openapi/project/ProjectUtil.kt +++ b/platform/platform-api/src/com/intellij/openapi/project/ProjectUtil.kt @@ -33,6 +33,7 @@ import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFilePathWrapper +import com.intellij.openapi.wm.WindowManager import com.intellij.util.PathUtilRt import com.intellij.util.io.exists import com.intellij.util.text.trimMiddle @@ -79,7 +80,13 @@ fun guessProjectForContentFile(file: VirtualFile, fileType: FileType = FileTypeM return null } - return ProjectManager.getInstance().openProjects.firstOrNull { !it.isDefault && it.isInitialized && !it.isDisposed && ProjectRootManager.getInstance(it).fileIndex.isInContent(file) } + val list = ProjectManager.getInstance().openProjects.filter { + !it.isDefault && it.isInitialized && !it.isDisposed && ProjectRootManager.getInstance(it).fileIndex.isInContent(file) + } + + if (list.isEmpty()) return null + + return list.firstOrNull { WindowManager.getInstance().getFrame(it)?.isActive ?: false } ?: list[0] } fun isProjectOrWorkspaceFile(file: VirtualFile): Boolean = ProjectCoreUtil.isProjectOrWorkspaceFile(file)