From 69e33d2c3f2f8cabbeb28ce52c4ffc95a606fae7 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Tue, 7 Jun 2016 15:28:38 +0300 Subject: [PATCH] inspection toolwindow: problem node can be amnestied and its siblings will be not affected --- .../ui/DefaultInspectionToolPresentation.java | 6 ++++++ .../codeInspection/ui/InspectionToolPresentation.java | 1 + .../intellij/codeInspection/ui/ProblemDescriptionNode.java | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java index 438a877261cd..e33d42acf9c0 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java @@ -360,6 +360,12 @@ public class DefaultInspectionToolPresentation implements ProblemDescriptionsPro getIgnoredElements().remove(refEntity); } + @Override + public void amnesty(RefEntity refEntity, CommonProblemDescriptor descriptor) { + final CommonProblemDescriptor[] ignoredDescriptors = getIgnoredElements().get(refEntity); + getIgnoredElements().put(refEntity, ArrayUtil.remove(ignoredDescriptors, descriptor)); + } + @Override public void ignoreProblem(RefEntity refEntity, CommonProblemDescriptor problem, int idx) { if (refEntity == null) return; diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java index 28eedbd80178..4c5244ac361c 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionToolPresentation.java @@ -57,6 +57,7 @@ public interface InspectionToolPresentation extends ProblemDescriptionsProcessor void ignoreCurrentElement(RefEntity refEntity); void amnesty(RefEntity refEntity); + void amnesty(RefEntity refEntity, CommonProblemDescriptor descriptor); void cleanup(); void finalCleanup(); boolean isGraphNeeded(); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java index 0b6206143ebf..b1424337e145 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java @@ -132,9 +132,9 @@ public class ProblemDescriptionNode extends SuppressableInspectionTreeNode { @Override public void amnestyElement(ExcludedInspectionTreeNodesManager manager) { - if (!isAlreadySuppressedFromView() && !isQuickFixAppliedFromView()) { + if (!isAlreadySuppressedFromView()) { InspectionToolPresentation presentation = getPresentation(); - presentation.amnesty(getElement()); + presentation.amnesty(getElement(), getDescriptor()); } super.amnestyElement(manager); }