diff options
author | Andrey Loskutov | 2017-07-26 14:32:13 +0000 |
---|---|---|
committer | Andrey Loskutov | 2017-07-26 15:24:04 +0000 |
commit | 91a82b9d620f896fd31618275e0ebb2098ac33ac (patch) | |
tree | aed45805b8b00ab71950f75e9d277039b5b57202 | |
parent | db6a352f061ce874849e3e7ce98a4b4e7e057a3c (diff) | |
download | eclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.tar.gz eclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.tar.xz eclipse.platform.ui-91a82b9d620f896fd31618275e0ebb2098ac33ac.zip |
Bug 520215 - ConcurrentModificationException in
CloseResourceAction.updateSelection
Change-Id: I35d00e506c59a7e9072dc4957103dfb53a6e697d
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
(cherry picked from commit 46d6b07f207bd78a88235cb93a0a97e1c8513427)
-rw-r--r-- | bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java index a1ef56deb19..1b980697100 100644 --- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java +++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/actions/CloseUnrelatedProjectsAction.java @@ -55,7 +55,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction { */ public static final String ID = PlatformUI.PLUGIN_ID + ".CloseUnrelatedProjectsAction"; //$NON-NLS-1$ - private final List<IResource> projectsToClose = new ArrayList<>(); + private List<IResource> projectsToClose = new ArrayList<>(); private boolean selectionDirty = true; @@ -190,7 +190,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction { /** * Computes the related projects of the selection. */ - private void computeRelated(List<? extends IResource> selection) { + private List<IResource> computeRelated(List<? extends IResource> selection) { //build the connected component set for all projects in the workspace DisjointSet<IProject> set = buildConnectedComponents(ResourcesPlugin.getWorkspace().getRoot().getProjects()); //remove the connected components that the selected projects are in @@ -198,8 +198,9 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction { set.removeSet(resource); } //the remainder of the projects in the disjoint set are unrelated to the selection - projectsToClose.clear(); - set.toList(projectsToClose); + List<IResource> projects = new ArrayList<>(); + set.toList(projects); + return projects; } @Override @@ -208,7 +209,7 @@ public class CloseUnrelatedProjectsAction extends CloseResourceAction { List<? extends IResource> newSelection = super.getSelectedResources(); if (!oldSelection.equals(newSelection)) { oldSelection = newSelection; - computeRelated(newSelection); + projectsToClose = computeRelated(newSelection); } selectionDirty = false; } |