From 1d669aa07653fa3cc3f0ff508512b6ac61f24d7c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 16 Jun 2011 19:33:08 +0200 Subject: [PATCH] avoid iterating all children of directory in order to determine its icon (IDEA-64348 redux) --- .../actions/OpenProjectFileChooserDescriptor.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) 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; } }