mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
avoid potentially long VFS access when updating project view during "scanning files to index" phase (IDEA-151067)
This commit is contained in:
@@ -36,6 +36,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.JDOMExternalizerUtil;
|
||||
@@ -156,8 +157,11 @@ public class ProjectViewPane extends AbstractProjectViewPSIPane {
|
||||
final PsiDirectory dir = (PsiDirectory)element;
|
||||
final ProjectTreeStructure treeStructure = (ProjectTreeStructure)myTreeStructure;
|
||||
PsiDirectory dirToUpdateFrom = dir;
|
||||
if (!treeStructure.isFlattenPackages() && treeStructure.isHideEmptyMiddlePackages()) {
|
||||
// optimization: this check makes sense only if flattenPackages == false && HideEmptyMiddle == true
|
||||
|
||||
// optimization
|
||||
// isEmptyMiddleDirectory can be slow when project VFS is not fully loaded (initial dumb mode).
|
||||
// It's easiest to disable the optimization in any dumb mode
|
||||
if (!treeStructure.isFlattenPackages() && treeStructure.isHideEmptyMiddlePackages() && !DumbService.isDumb(myProject)) {
|
||||
while (dirToUpdateFrom != null && ProjectViewDirectoryHelper.getInstance(myProject).isEmptyMiddleDirectory(dirToUpdateFrom, true)) {
|
||||
dirToUpdateFrom = dirToUpdateFrom.getParentDirectory();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user