diff --git a/src/Main/SharpDevelop/Project/SolutionFolder.cs b/src/Main/SharpDevelop/Project/SolutionFolder.cs
index d61b1ec328..89044a17a5 100644
--- a/src/Main/SharpDevelop/Project/SolutionFolder.cs
+++ b/src/Main/SharpDevelop/Project/SolutionFolder.cs
@@ -82,12 +82,14 @@ namespace ICSharpCode.SharpDevelop.Project
 			
 			protected override void OnCollectionChanged(IReadOnlyCollection<ISolutionItem> removedItems, IReadOnlyCollection<ISolutionItem> addedItems)
 			{
-				using (folder.parentSolution.ReportBatch()) {
-					foreach (ISolutionItem item in removedItems) {
-						folder.parentSolution.ReportRemovedItem(item);
-					}
-					foreach (ISolutionItem item in addedItems) {
-						folder.parentSolution.ReportAddedItem(item);
+				if (folder.parentSolution.IsAncestorOf(folder)) {
+					using (folder.parentSolution.ReportBatch()) {
+						foreach (ISolutionItem item in removedItems) {
+							folder.parentSolution.ReportRemovedItem(item);
+						}
+						foreach (ISolutionItem item in addedItems) {
+							folder.parentSolution.ReportAddedItem(item);
+						}
 					}
 				}
 				base.OnCollectionChanged(removedItems, addedItems);