From 2bad84d03136e65866a2c3271a2c3039fa24ab1c Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Sun, 21 Feb 2010 22:35:27 +0000 Subject: [PATCH] bug 303365: CProjectDescriptorManager.removeCProjectDescriptionListener() does not remove listeners Patch from David Dubrow --- .../model/CProjectDescriptionManager.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index e63b7e1576a..def75c9452d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -231,14 +231,6 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { public boolean handlesEvent(int eventType){ return (eventType & fEventTypes) != 0; } - @Override - public int hashCode() { - return fListener.hashCode(); - } - @Override - public boolean equals(Object obj) { - return fListener.equals(obj); - } } private volatile Map fProviderMap; @@ -2121,7 +2113,12 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { } public void removeCProjectDescriptionListener(ICProjectDescriptionListener listener) { - fListeners.remove(listener); + for (ListenerDescriptor listenerDescriptor : fListeners) { + if (listenerDescriptor.fListener.equals(listener)) { + fListeners.remove(listenerDescriptor); + break; + } + } } public void notifyListeners(CProjectDescriptionEvent event){