projectivew: selectin fix for libs

This commit is contained in:
Kirill Kalishev
2011-04-08 18:55:24 +04:00
parent 26489e4789
commit 3d411aa9dc
2 changed files with 22 additions and 10 deletions
@@ -125,21 +125,30 @@ public abstract class ProjectViewNode <Value> extends AbstractTreeNode<Value> im
}
public boolean someChildContainsFile(final VirtualFile file) {
return someChildContainsFile(file, true);
}
public boolean someChildContainsFile(final VirtualFile file, boolean optimizeByCheckingFileRootsFirst) {
VirtualFile parent = file.getParent();
if (parent == null) return false;
boolean mayContain = false;
Collection<VirtualFile> roots = getRoots();
for (VirtualFile eachRoot : roots) {
if (parent.equals(eachRoot.getParent())) {
mayContain = true;
break;
}
if (VfsUtil.isAncestor(eachRoot, file, true)) {
mayContain = true;
break;
if (optimizeByCheckingFileRootsFirst) {
Collection<VirtualFile> roots = getRoots();
for (VirtualFile eachRoot : roots) {
if (parent.equals(eachRoot.getParent())) {
mayContain = true;
break;
}
if (VfsUtil.isAncestor(eachRoot, file, true)) {
mayContain = true;
break;
}
}
} else {
mayContain = true;
}
if (!mayContain) {
@@ -47,7 +47,10 @@ public class ExternalLibrariesNode extends ProjectViewNode<String> {
@Override
public boolean contains(@NotNull VirtualFile file) {
return someChildContainsFile(file);
ProjectFileIndex index = ProjectRootManager.getInstance(getProject()).getFileIndex();
if (!index.isInLibrarySource(file) && !index.isInLibraryClasses(file)) return false;
return someChildContainsFile(file, false);
}
@NotNull