50 lines
2.2 KiB
Diff
50 lines
2.2 KiB
Diff
From 43e2105b58b2e2cc002bf979c6ed88e7d8b3b144 Mon Sep 17 00:00:00 2001
|
|
From: Joshua Matsuoka
|
|
Date: Wed, 6 Jun 2018 15:39:24 -0400
|
|
Subject: Bug 533655 - Can't deselect features from top level category which
|
|
has subcategories
|
|
|
|
Change-Id: I6214b2518b13c4243c84d61de0a2e4d21b20b5b5
|
|
Signed-off-by: Joshua Matsuoka <jmatsuok@redhat.com>---
|
|
.../p2/ui/dialogs/DelayedFilterCheckboxTree.java | 17 +++++++++++++----
|
|
1 file changed, 13 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
|
|
index d1527c5..f5238eb 100644
|
|
--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
|
|
+++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/DelayedFilterCheckboxTree.java
|
|
@@ -73,10 +73,10 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
|
|
// cache.
|
|
if (contentProvider.hasChildren(event.getElement())) {
|
|
Set<Object> unchecked = new HashSet<>();
|
|
- Object[] children = contentProvider.getChildren(event.getElement());
|
|
- for (Object element1 : children) {
|
|
- unchecked.add(element1);
|
|
- }
|
|
+ // See bug 533655, We should uncheck all of the children
|
|
+ // of the triggering element, not just the direct descendants.
|
|
+ uncheckAllChildren(unchecked, event.getElement());
|
|
+
|
|
Iterator<Object> iter = checkState.iterator();
|
|
while (iter.hasNext()) {
|
|
Object current = iter.next();
|
|
@@ -103,6 +103,15 @@ public class DelayedFilterCheckboxTree extends FilteredTree {
|
|
return checkboxViewer;
|
|
}
|
|
|
|
+ private void uncheckAllChildren(Set<Object> unchecked, Object element) {
|
|
+ for (Object child : contentProvider.getChildren(element)) {
|
|
+ unchecked.add(child);
|
|
+ if (contentProvider.getChildren(child).length > 0) {
|
|
+ uncheckAllChildren(unchecked, child);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
@Override
|
|
protected Composite createFilterControls(Composite filterParent) {
|
|
super.createFilterControls(filterParent);
|
|
--
|
|
cgit v1.1
|
|
|