[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] fix for 65154
|
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;