diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index aa5f93474ac..af546f26ba1 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 &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"< recursiveDirs(const QString &folder); @@ -129,6 +131,8 @@ private: QMultiMap m_map; QSet m_recursiveWatchedFolders; + QTimer m_compressTimer; + QSet m_changedFolders; }; }