diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java index ab7dc3a3819..5900c417573 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/BaseCElementContentProvider.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.cdt.core.model.CModelException; +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IArchive; import org.eclipse.cdt.core.model.IArchiveContainer; import org.eclipse.cdt.core.model.IBinary; @@ -157,7 +158,9 @@ public class BaseCElementContentProvider implements ITreeContentProvider { } else { return true; } - } else if (element instanceof ICContainer) { + } + + if (element instanceof ICContainer) { return true; } @@ -173,13 +176,23 @@ public class BaseCElementContentProvider implements ITreeContentProvider { * Method declared on ITreeContentProvider. */ public Object getParent(Object element) { - //if (!exists(element)) - // return null; + if (!exists(element)) { + return null; + } + return internalGetParent(element); + } + + public Object internalGetParent(Object element) { if (element instanceof ICElement) { return ((ICElement)element).getParent(); } if (element instanceof IResource) { - return ((IResource)element).getParent(); + IResource parent= ((IResource)element).getParent(); + ICElement cParent= CoreModel.getDefault().create(parent); + if (cParent != null && cParent.exists()) { + return cParent; + } + return parent; } return null; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java index a561515f4cd..1054c1c23da 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java @@ -6,11 +6,12 @@ package org.eclipse.cdt.internal.ui; */ import org.eclipse.cdt.core.model.IBinary; +import org.eclipse.cdt.core.model.IBinaryModule; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.core.model.IDeclaration; import org.eclipse.cdt.core.model.IMember; import org.eclipse.cdt.core.model.IMethodDeclaration; -import org.eclipse.cdt.core.model.IDeclaration; import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CUIPlugin; @@ -158,6 +159,9 @@ public class CElementImageProvider { int type = celement.getElementType(); switch (type) { case ICElement.C_VCONTAINER: + if (celement instanceof IBinaryModule) { + return CPluginImages.DESC_OBJS_BINARY; + } return CPluginImages.DESC_OBJS_CONTAINER; case ICElement.C_BINARY: {