IDEA-163903 Current file todos are not shown in 'Scope Based' tab with selected 'Current file' scope

This commit is contained in:
Maxim.Mossienko
2016-11-21 16:34:28 +01:00
parent 20ae820816
commit 7997b15d8c
2 changed files with 14 additions and 16 deletions
@@ -24,8 +24,8 @@ import com.intellij.ide.todo.nodes.ToDoRootNode;
import com.intellij.ide.util.scopeChooser.ScopeChooserCombo;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
public class ScopeBasedTodosTreeStructure extends TodoTreeStructure {
@@ -39,11 +39,10 @@ public class ScopeBasedTodosTreeStructure extends TodoTreeStructure {
@Override
public boolean accept(final PsiFile psiFile) {
if (!psiFile.isValid()) return false;
boolean isAffected = false;
SearchScope scope = myScopes.getSelectedScope();
if (scope instanceof GlobalSearchScope) {
isAffected = ((GlobalSearchScope)scope).contains(psiFile.getVirtualFile());
}
VirtualFile file = psiFile.getVirtualFile();
boolean isAffected = scope != null && file != null && scope.contains(file);
return isAffected && (myTodoFilter != null && myTodoFilter.accept(mySearchHelper, psiFile) ||
(myTodoFilter == null && mySearchHelper.getTodoItemsCount(psiFile) > 0));
}
@@ -34,7 +34,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.IndexNotReadyException;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.SimpleToolWindowPanel;
import com.intellij.openapi.ui.Splitter;
@@ -50,7 +50,10 @@ import com.intellij.ui.content.Content;
import com.intellij.ui.treeStructure.Tree;
import com.intellij.usageView.UsageInfo;
import com.intellij.usages.impl.UsagePreviewPanel;
import com.intellij.util.*;
import com.intellij.util.Alarm;
import com.intellij.util.EditSourceOnDoubleClickHandler;
import com.intellij.util.OpenSourceUtil;
import com.intellij.util.PlatformIcons;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -417,15 +420,11 @@ abstract class TodoPanel extends SimpleToolWindowPanel implements OccurenceNavig
alarm.cancelAllRequests();
alarm.addRequest(() -> {
final Set<VirtualFile> files = new HashSet<>();
ApplicationManager.getApplication().runReadAction(() -> {
try {
myTodoTreeBuilder.collectFiles(virtualFile -> {
files.add(virtualFile);
return true;
});
}
catch (IndexNotReadyException ignore) {
}
DumbService.getInstance(myProject).runReadActionInSmartMode(() -> {
myTodoTreeBuilder.collectFiles(virtualFile -> {
files.add(virtualFile);
return true;
});
});
final Runnable runnable = () -> {
myTodoTreeBuilder.rebuildCache(files);