mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Collapse variants of the same include file into a single node.
This commit is contained in:
parent
5f065af0d8
commit
484ec88e27
2 changed files with 9 additions and 3 deletions
|
@ -16,6 +16,7 @@ import junit.framework.Test;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.swt.widgets.Tree;
|
import org.eclipse.swt.widgets.Tree;
|
||||||
|
import org.eclipse.swt.widgets.TreeItem;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.IPDOMManager;
|
import org.eclipse.cdt.core.dom.IPDOMManager;
|
||||||
|
@ -37,6 +38,7 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
|
||||||
// // source
|
// // source
|
||||||
// #include "user.h"
|
// #include "user.h"
|
||||||
// #include <system.h>
|
// #include <system.h>
|
||||||
|
// #include "user.h"
|
||||||
|
|
||||||
public void testSimpleInclusion() throws Exception {
|
public void testSimpleInclusion() throws Exception {
|
||||||
TestScannerProvider.sIncludes= new String[] { getProject().getProject().getLocation().toOSString() };
|
TestScannerProvider.sIncludes= new String[] { getProject().getProject().getLocation().toOSString() };
|
||||||
|
@ -50,9 +52,10 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
|
||||||
|
|
||||||
openIncludeBrowser(source);
|
openIncludeBrowser(source);
|
||||||
Tree tree = getIBTree();
|
Tree tree = getIBTree();
|
||||||
checkTreeNode(tree, 0, "source.cpp");
|
TreeItem node = checkTreeNode(tree, 0, "source.cpp");
|
||||||
checkTreeNode(tree, 0, 0, "user.h");
|
checkTreeNode(tree, 0, 0, "user.h");
|
||||||
checkTreeNode(tree, 0, 1, "system.h");
|
checkTreeNode(tree, 0, 1, "system.h");
|
||||||
|
assertEquals(2, node.getItemCount());
|
||||||
|
|
||||||
// The tree has to be reversed
|
// The tree has to be reversed
|
||||||
openIncludeBrowser(user, true);
|
openIncludeBrowser(user, true);
|
||||||
|
|
|
@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.ui.includebrowser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
@ -102,7 +104,7 @@ public class IBContentProvider extends AsyncTreeContentProvider {
|
||||||
directiveFile= node.getRepresentedFile();
|
directiveFile= node.getRepresentedFile();
|
||||||
}
|
}
|
||||||
if (includes.length > 0) {
|
if (includes.length > 0) {
|
||||||
ArrayList<IBNode> result= new ArrayList<IBNode>(includes.length);
|
Set<IBNode> result= new LinkedHashSet<IBNode>(includes.length);
|
||||||
for (int i = 0; i < includes.length; i++) {
|
for (int i = 0; i < includes.length; i++) {
|
||||||
IIndexInclude include = includes[i];
|
IIndexInclude include = includes[i];
|
||||||
try {
|
try {
|
||||||
|
@ -122,6 +124,7 @@ public class IBContentProvider extends AsyncTreeContentProvider {
|
||||||
include.getIncludedBy().getTimestamp());
|
include.getIncludedBy().getTimestamp());
|
||||||
newnode.setIsActiveCode(include.isActive());
|
newnode.setIsActiveCode(include.isActive());
|
||||||
newnode.setIsSystemInclude(include.isSystemInclude());
|
newnode.setIsSystemInclude(include.isSystemInclude());
|
||||||
|
if (!result.contains(newnode) || newnode.isActiveCode())
|
||||||
result.add(newnode);
|
result.add(newnode);
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
CUIPlugin.log(e);
|
CUIPlugin.log(e);
|
||||||
|
|
Loading…
Add table
Reference in a new issue