Bug 261031 [CommonNavigator] IPipelinedContentProvider getParent() returning the suggested parent is not ignored
"Link with Editor" neglects to expand the tree in Project Explorer for not C/C++ file types after reopening eclipse. My case: 1. Create a new subfolder in C/C++ project. Place there a new file with non-C/C++ extension like hello.txt. Open the file with text editor. 2. Quit and reenter eclipse. It should open hello.txt in editor at that point. 3. In Project Explorer, push button "Link with Editor". I expect the tree to be expanded and the cursor placed on hello.txt at that point. As a side note, the button is actually named "Link open editors with content in the Navigator" (???). Well, that appears to be absolutely true and if you open Navigator it is linked. But what about linking in Project Explorer?
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentServiceContentProvider.java
else
					parentPaths.addAll(foundPaths);
			}
		}
		return parentPaths;
	}
	private Set findParents(Object anElement) {
		Set descriptors = contentService.findDescriptorsWithPossibleChild(anElement, false);
		Set parents = new LinkedHashSet();
		NavigatorContentDescriptor foundDescriptor;
		NavigatorContentExtension foundExtension;
		Object parent = null;
		for (Iterator itr = descriptors.iterator(); itr.hasNext();) {
			foundDescriptor = (NavigatorContentDescriptor) itr.next();
			foundExtension = contentService.getExtension(foundDescriptor);
			try {
				if (!isOverridingDescriptorInSet(foundExtension.getDescriptor(), descriptors)) {
					if (foundExtension.internalGetContentProvider().isTreePath()) {
						TreePath[] parentTreePaths = ((ITreePathContentProvider) foundExtension
								.internalGetContentProvider()).getParents(anElement);
						for (int i = 0; i < parentTreePaths.length; i++) {
							parent = parentTreePaths[i].getLastSegment();
							if ((parent = findParent(foundExtension, anElement, parent)) != null)
								parents.add(parent);
						}
					} else {
						parent = foundExtension.internalGetContentProvider().getParent(anElement);
						if ((parent = findParent(foundExtension, anElement, parent)) != null)
							parents.add(parent);
					}