diff --git a/src/plugins/autotest/testtreeitem.cpp b/src/plugins/autotest/testtreeitem.cpp
index c780bea089d66ba0898eae5bddee85e53425c883..50ca4c899f7a53b5424b94a467b3f5e13d16013b 100644
--- a/src/plugins/autotest/testtreeitem.cpp
+++ b/src/plugins/autotest/testtreeitem.cpp
@@ -42,7 +42,7 @@ TestTreeItem::TestTreeItem(const QString &name, const QString &filePath, Type ty
       m_filePath(filePath),
       m_type(type),
       m_line(0),
-      m_markedForRemoval(false)
+      m_status(NewlyAdded)
 {
     m_checked = (m_type == TestCase || m_type == TestFunctionOrSet) ? Qt::Checked : Qt::Unchecked;
 }
@@ -207,12 +207,12 @@ Qt::CheckState TestTreeItem::checked() const
 
 void TestTreeItem::markForRemoval(bool mark)
 {
-    m_markedForRemoval = mark;
+    m_status = mark ? MarkedForRemoval : Cleared;
 }
 
 void TestTreeItem::markForRemovalRecursively(bool mark)
 {
-    m_markedForRemoval = mark;
+    markForRemoval(mark);
     for (int row = 0, count = childCount(); row < count; ++row)
         childItem(row)->markForRemovalRecursively(mark);
 }
diff --git a/src/plugins/autotest/testtreeitem.h b/src/plugins/autotest/testtreeitem.h
index 4d44923c2f855ccaea7cdaa7016a998176f59b70..5f45a723ef78820381140e439abdc0bbcd8e8c04 100644
--- a/src/plugins/autotest/testtreeitem.h
+++ b/src/plugins/autotest/testtreeitem.h
@@ -90,7 +90,8 @@ public:
     Type type() const { return m_type; }
     void markForRemoval(bool mark);
     void markForRemovalRecursively(bool mark);
-    bool markedForRemoval() const { return m_markedForRemoval; }
+    bool markedForRemoval() const { return m_status == MarkedForRemoval; }
+    bool newlyAdded() const { return m_status == NewlyAdded; }
     TestTreeItem *parentItem() const;
     TestTreeItem *childItem(int row) const;
 
@@ -114,6 +115,13 @@ private:
     void revalidateCheckState();
     bool modifyName(const QString &name);
 
+    enum Status
+    {
+        NewlyAdded,
+        MarkedForRemoval,
+        Cleared
+    };
+
     QString m_name;
     QString m_filePath;
     Qt::CheckState m_checked;
@@ -121,7 +129,7 @@ private:
     unsigned m_line;
     unsigned m_column;
     QString m_proFile;
-    bool m_markedForRemoval;
+    Status m_status;
 };
 
 typedef QVector<TestCodeLocationAndType> TestCodeLocationList;
diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp
index 6fd7f52f491aa812b0e060340972fec7c16d27a4..fa69cafe42d97324ffb0d6e334748e5e9ab99169 100644
--- a/src/plugins/autotest/testtreemodel.cpp
+++ b/src/plugins/autotest/testtreemodel.cpp
@@ -703,6 +703,7 @@ bool TestTreeModel::sweepChildren(TestTreeItem *item)
                 continue;
             }
         }
+        hasChanged |= child->newlyAdded();
         child->markForRemoval(false);
     }
     return hasChanged;