diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
index 6c82b07a5bf..f5174157a6a 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/includebrowser/BasicIncludeBrowserTest.java
@@ -16,6 +16,7 @@ import junit.framework.Test;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
 
 import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.cdt.core.dom.IPDOMManager;
@@ -37,6 +38,7 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
 	// // source
 	// #include "user.h"
 	// #include <system.h>
+	// #include "user.h"
 	
 	public void testSimpleInclusion() throws Exception {
 		TestScannerProvider.sIncludes= new String[] { getProject().getProject().getLocation().toOSString() };
@@ -50,9 +52,10 @@ public class BasicIncludeBrowserTest extends IncludeBrowserBaseTest {
 
 		openIncludeBrowser(source);
 		Tree tree = getIBTree();
-		checkTreeNode(tree, 0, "source.cpp");
+		TreeItem node = checkTreeNode(tree, 0, "source.cpp");
 		checkTreeNode(tree, 0, 0, "user.h");
 		checkTreeNode(tree, 0, 1, "system.h");
+		assertEquals(2, node.getItemCount());
 		
 		// The tree has to be reversed
 		openIncludeBrowser(user, true);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java
index 6c92fbf840e..96a8383a060 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBContentProvider.java
@@ -12,6 +12,8 @@ package org.eclipse.cdt.internal.ui.includebrowser;
 
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -102,7 +104,7 @@ public class IBContentProvider extends AsyncTreeContentProvider {
 					directiveFile= node.getRepresentedFile();
 				}
 				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++) {
 						IIndexInclude include = includes[i];
 						try {
@@ -122,7 +124,8 @@ public class IBContentProvider extends AsyncTreeContentProvider {
 									include.getIncludedBy().getTimestamp());
 							newnode.setIsActiveCode(include.isActive());
 							newnode.setIsSystemInclude(include.isSystemInclude());
-							result.add(newnode);
+							if (!result.contains(newnode) || newnode.isActiveCode())
+								result.add(newnode);
 						} catch (CoreException e) {
 							CUIPlugin.log(e);
 						}