Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-patch] fix for 65154

Sorry, bug# should be 66106.


Chris Wiebe wrote:

This patch fixes the Members view so inner classes are now displayed
properly.

Chris




------------------------------------------------------------------------

Index: browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java,v
retrieving revision 1.3
diff -u -r1.3 CBrowsingPart.java
--- browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java	18 Jun 2004 03:30:22 -0000	1.3
+++ browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java	18 Jun 2004 18:01:02 -0000
@@ -23,8 +23,10 @@
 import org.eclipse.cdt.core.model.CModelException;
 import org.eclipse.cdt.core.model.CoreModel;
 import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICElementVisitor;
 import org.eclipse.cdt.core.model.ICModel;
 import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IParent;
 import org.eclipse.cdt.core.model.ISourceRoot;
 import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.core.resources.FileStorage;
@@ -45,6 +47,7 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -711,6 +714,26 @@
 		return null;
 	}
 	
+	private static boolean hasChild(final ICElement parent, final ICElement child) {
+		final boolean foundChild[] = { false };
+		final ICElementVisitor visitor = new ICElementVisitor() {
+			public boolean visit(ICElement element) throws CoreException {
+				if (foundChild[0])
+					return false;
+				if (element.equals(child)) {
+					foundChild[0] = true;
+					return false;
+				}
+				return true;
+			}
+		};
+		try {
+			parent.accept(visitor);
+		} catch (CoreException e) {
+		}
+		return foundChild[0];
+	}
+	
 	protected Object getTypesInput(Object element) {
 		if (element instanceof ICModel || element instanceof ICProject || element instanceof ISourceRoot) {
 			return null;
@@ -737,7 +760,7 @@
 						ITypeInfo enclosedType = enclosedTypes[j];
 						if (enclosedType.getResolvedReference() != null) {
 							ICElement typeElem = enclosedType.getResolvedReference().getCElement();
-							if (typeElem != null && typeElem.equals(cElem)) {
+							if (typeElem != null && (typeElem.equals(cElem) || (typeElem instanceof IParent && hasChild(typeElem, cElem)))) {
 								return namespaces[i];
 							}
 						}
Index: browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersViewContentProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersViewContentProvider.java,v
retrieving revision 1.1
diff -u -r1.1 MembersViewContentProvider.java
--- browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersViewContentProvider.java	26 May 2004 14:49:48 -0000	1.1
+++ browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersViewContentProvider.java	18 Jun 2004 18:01:02 -0000
@@ -52,6 +52,10 @@
 				ITypeInfo info = (ITypeInfo) element;
 				return (info.getCElementType() != ICElement.C_TYPEDEF);
 			}
+			
+			if (element instanceof IParent) {
+				return ((IParent)element).hasChildren();
+			}
return false;
 //		} catch (CModelException e) {
@@ -99,6 +103,10 @@
 					return ((IParent)elem).getChildren();
 				}
 				return NO_CHILDREN;
+			}
+			
+			if (element instanceof IParent) {
+				return ((IParent)element).getChildren();
 			}
return NO_CHILDREN;



Back to the top