diff --git a/platform/platform-impl/src/com/intellij/ide/actions/OpenProjectFileChooserDescriptor.java b/platform/platform-impl/src/com/intellij/ide/actions/OpenProjectFileChooserDescriptor.java index 68fbd4500600..50589926d6ec 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/OpenProjectFileChooserDescriptor.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/OpenProjectFileChooserDescriptor.java @@ -86,16 +86,8 @@ public class OpenProjectFileChooserDescriptor extends FileChooserDescriptor { private static boolean isProjectDirectory(final VirtualFile virtualFile) { // the root directory of any drive is never an IDEA project if (virtualFile.getParent() == null) return false; - if (virtualFile.isDirectory() && virtualFile.isValid()) { - final VirtualFile[] children = virtualFile.getChildren(); - if (children == null) return false; - for (VirtualFile file : children) { - if (file.getName().equals(Project.DIRECTORY_STORE_FOLDER)) return true; - if (isIprFile(file)) { - return true; - } - } - } + // NOTE: For performance reasons, it's very important not to iterate through all of the children here. + if (virtualFile.isDirectory() && virtualFile.isValid() && virtualFile.findChild(Project.DIRECTORY_STORE_FOLDER) != null) return true; return false; } }