diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index aa5f93474ac1e9a6b3a947f31f538b6e62a7915e..af546f26ba1c1c98bde17f14e1970ee0180de9c5 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -1132,6 +1132,10 @@ namespace {
 
 CentralizedFolderWatcher::CentralizedFolderWatcher()
 {
+    m_compressTimer.setSingleShot(true);
+    m_compressTimer.setInterval(200);
+    connect(&m_compressTimer, SIGNAL(timeout()),
+            this, SLOT(onTimer()));
     connect (&m_watcher, SIGNAL(directoryChanged(QString)),
              this, SLOT(folderChanged(QString)));
 }
@@ -1225,8 +1229,20 @@ void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, Qt4
     }
 }
 
-
 void CentralizedFolderWatcher::folderChanged(const QString &folder)
+{
+    m_changedFolders.insert(folder);
+    m_compressTimer.start();
+}
+
+void CentralizedFolderWatcher::onTimer()
+{
+    foreach(const QString &folder, m_changedFolders)
+        delayedFolderChanged(folder);
+    m_changedFolders.clear();
+}
+
+void CentralizedFolderWatcher::delayedFolderChanged(const QString &folder)
 {
     if (debugCFW)
         qDebug()<<"CFW::folderChanged"<<folder;
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 7141fbb81407c0d6a186bb5871f3904883b072dc..6b2f7b21c6b476a2c954249acf334c6597aef4e6 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -122,6 +122,8 @@ public:
 
 private slots:
     void folderChanged(const QString &folder);
+    void onTimer();
+    void delayedFolderChanged(const QString &folder);
 
 private:
     QSet<QString> recursiveDirs(const QString &folder);
@@ -129,6 +131,8 @@ private:
     QMultiMap<QString, Qt4PriFileNode *> m_map;
 
     QSet<QString> m_recursiveWatchedFolders;
+    QTimer m_compressTimer;
+    QSet<QString> m_changedFolders;
 };
 
 }