diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp index d78a3ebac930cfca6e91b3ebd5ec55e3db55d61a..85bcff190d52d512c0f954af2df5a59299152359 100644 --- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp +++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.cpp @@ -8,7 +8,10 @@ FileFilterBaseItem::FileFilterBaseItem(QObject *parent) : QmlProjectContentItem(parent), m_recurse(RecurseDefault) { + m_updateFileListTimer.setSingleShot(true); + m_updateFileListTimer.setInterval(50); connect(&m_dirWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(updateFileList())); + connect(&m_updateFileListTimer, SIGNAL(timeout()), this, SLOT(updateFileListNow())); } QString FileFilterBaseItem::directory() const @@ -32,7 +35,7 @@ void FileFilterBaseItem::setDefaultDirectory(const QString &dirPath) return; m_defaultDir = dirPath; - updateFileList(); + updateFileListNow(); } QString FileFilterBaseItem::filter() const @@ -155,6 +158,15 @@ QString FileFilterBaseItem::absoluteDir() const void FileFilterBaseItem::updateFileList() { + if (!m_updateFileListTimer.isActive()) + m_updateFileListTimer.start(); +} + +void FileFilterBaseItem::updateFileListNow() +{ + if (m_updateFileListTimer.isActive()) + m_updateFileListTimer.stop(); + const QString projectDir = absoluteDir(); if (projectDir.isEmpty()) return; diff --git a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h index ec27e1cd26450e953a99f01ebfd92cf3a63ae728..42a244e5d41c5a5969febc2a900a9a83ad4ff4ff 100644 --- a/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h +++ b/src/plugins/qmlprojectmanager/fileformat/filefilteritems.h @@ -6,6 +6,7 @@ #include <QSet> #include <qdeclarative.h> #include <QFileSystemWatcher> +#include <QTimer> #include "qmlprojectitem.h" #include "filesystemwatcher.h" @@ -49,6 +50,7 @@ signals: private slots: void updateFileList(); + void updateFileListNow(); private: QString absolutePath(const QString &path) const; @@ -74,6 +76,7 @@ private: QSet<QString> m_files; FileSystemWatcher m_dirWatcher; + QTimer m_updateFileListTimer; friend class ProjectItem;