From 997f0012d069b80c97d9fefd2258ef6fd93183e9 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Thu, 24 Mar 2016 14:30:53 +0300 Subject: [PATCH] inspection tool window: fix - tree forget some of nodes when grouped by packages IDEA-151314 --- .../ex/InspectionRVContentProvider.java | 12 +++++------ .../ex/InspectionRVContentProviderImpl.java | 20 +++++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProvider.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProvider.java index 0ca156286fb9..585d766fcbc8 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProvider.java @@ -20,12 +20,10 @@ */ package com.intellij.codeInspection.ex; -import com.google.common.collect.Multimap; import com.intellij.codeInspection.CommonProblemDescriptor; import com.intellij.codeInspection.QuickFix; import com.intellij.codeInspection.reference.RefEntity; import com.intellij.codeInspection.ui.*; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; @@ -37,8 +35,6 @@ import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.MutableTreeNode; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.util.*; @@ -210,8 +206,12 @@ public abstract class InspectionRVContentProvider { for (UserObjectContainer container : packageDescriptors.get(pNode)) { appendDescriptor(context, toolWrapper, container, pNode, canPackageRepeat); } - for (int i = 0; i < pNode.getChildCount(); i++) { - final TreeNode childNode = pNode.getChildAt(i); + final int count = pNode.getChildCount(); + final ArrayList childNodes = new ArrayList<>(count); + for (int i = 0; i < count; i++) { + childNodes.add(pNode.getChildAt(i)); + } + for (TreeNode childNode: childNodes) { if (childNode instanceof ProblemDescriptionNode) { createdNodesConsumer.accept(pNode); break; diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java index 221af1f72403..38ddfce7a6b5 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java @@ -112,9 +112,13 @@ public class InspectionRVContentProviderImpl extends InspectionRVContentProvider } entities.addAll(moduleProblems); } - buildTree(context, contents, false, toolWrapper, computeContainer, showStructure, node -> { - merge(node, toolNode, true); - }); + buildTree(context, + contents, + false, + toolWrapper, + computeContainer, + showStructure, + node -> merge(node, toolNode, true)); if (presentation.isOldProblemsIncluded()) { final Map oldProblems = presentation.getOldProblemElements(); @@ -125,9 +129,13 @@ public class InspectionRVContentProviderImpl extends InspectionRVContentProvider } }; - buildTree(context, presentation.getOldContent(), true, toolWrapper, computeContainer, showStructure, node -> { - merge(node, toolNode, true); - }); + buildTree(context, + presentation.getOldContent(), + true, + toolWrapper, + computeContainer, + showStructure, + node -> merge(node, toolNode, true)); } merge(toolNode, parentNode, false); }