From 7997b15d8c1adfa817d2c44ae280bf63ec18e910 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 21 Nov 2016 16:19:52 +0100 Subject: [PATCH] IDEA-163903 Current file todos are not shown in 'Scope Based' tab with selected 'Current file' scope --- .../todo/ScopeBasedTodosTreeStructure.java | 9 ++++---- .../src/com/intellij/ide/todo/TodoPanel.java | 21 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/todo/ScopeBasedTodosTreeStructure.java b/platform/lang-impl/src/com/intellij/ide/todo/ScopeBasedTodosTreeStructure.java index 500e17b56534..f3f461b8281a 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/ScopeBasedTodosTreeStructure.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/ScopeBasedTodosTreeStructure.java @@ -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)); } diff --git a/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java b/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java index 1daf08b07d05..c3707b36be4a 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java @@ -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 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);