From 6a7946eeee3ed4a472b7753938a666efc63c778b Mon Sep 17 00:00:00 2001 From: David Inglis Date: Thu, 11 Dec 2003 21:32:17 +0000 Subject: [PATCH] Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=48596 --- core/org.eclipse.cdt.core/ChangeLog | 5 ++++ .../internal/core/model/CModelManager.java | 29 +++++++++++++++++++ core/org.eclipse.cdt.ui/ChangeLog | 5 ++++ .../cdt/ui/CElementContentProvider.java | 4 +++ 4 files changed, 43 insertions(+) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index 98c45e6b6f1..a63d1c41791 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,8 @@ +2002-12-11 David Inglis + Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=48596 + + * model/org/eclipse/cdt/internal/core/model/CModelManager.java + 2003-12-11 Alain Magloire Call the super() constructor. diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java index 1b20fe0c268..03debd7346d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java @@ -337,6 +337,35 @@ public class CModelManager implements IResourceChangeListener { } } } + } else { + ICProject cproject = celement.getCProject(); + CProjectInfo info = (CProjectInfo)peekAtInfo(cproject); + if (info.vBin != null) { + if (peekAtInfo(info.vBin) != null) { + IBinary[] bins = info.vBin.getBinaries(); + for (int i = 0; i < bins.length; i++) { + if (celement.getPath().isPrefixOf(bins[i].getPath())) { + CElementDelta delta = new CElementDelta(getCModel()); + delta.changed(info.vBin, ICElementDelta.CHANGED); + registerCModelDelta(delta); + info.vBin.removeChild(bins[i]); + } + } + } + } + if (info.vLib != null) { + if (peekAtInfo(info.vLib) != null) { + IArchive[] ars = info.vLib.getArchives(); + for (int i = 0; i < ars.length; i++) { + if (celement.getPath().isPrefixOf(ars[i].getPath())) { + CElementDelta delta = new CElementDelta(getCModel()); + delta.changed(info.vLib, ICElementDelta.CHANGED); + registerCModelDelta(delta); + info.vLib.removeChild(ars[i]); + } + } + } + } } } diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 38db4ce8c44..c6ab4001172 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,8 @@ +2002-12-11 David Inglis + Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=48596 + + * src/org/eclipse/cdt/ui/CElementContentProvider.java + 2003-12-10 Alain Magloire A quick fix for PR 47751. The correct way to deal with this diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java index 9c87b4afc2f..f1f342cdc37 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementContentProvider.java @@ -18,6 +18,8 @@ import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.IElementChangedListener; import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.internal.core.model.ArchiveContainer; +import org.eclipse.cdt.internal.core.model.BinaryContainer; import org.eclipse.cdt.internal.ui.BaseCElementContentProvider; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceDelta; @@ -125,6 +127,8 @@ public class CElementContentProvider extends BaseCElementContentProvider impleme element instanceof IBinary || element instanceof IArchive) { postRefresh(element); return; + } else if (element instanceof ArchiveContainer || element instanceof BinaryContainer) { + postContainerRefresh((IParent) element, element.getCProject()); } }