diff options
Diffstat (limited to 'src/plugins/projectexplorer/currentprojectfilter.cpp')
-rw-r--r-- | src/plugins/projectexplorer/currentprojectfilter.cpp | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/plugins/projectexplorer/currentprojectfilter.cpp b/src/plugins/projectexplorer/currentprojectfilter.cpp index cb0ddef74b..d2a06cc6d1 100644 --- a/src/plugins/projectexplorer/currentprojectfilter.cpp +++ b/src/plugins/projectexplorer/currentprojectfilter.cpp @@ -29,52 +29,53 @@ ****************************************************************************/ #include "currentprojectfilter.h" -#include "projectexplorer.h" +#include "projecttree.h" #include "project.h" +#include "session.h" #include <utils/algorithm.h> #include <QMutexLocker> +#include <QTimer> using namespace Core; using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; CurrentProjectFilter::CurrentProjectFilter() - : BaseFileFilter(), m_project(0), m_filesUpToDate(false) + : BaseFileFilter(), m_project(0) { setId("Files in current project"); setDisplayName(tr("Files in Current Project")); - setPriority(Low); setShortcutString(QString(QLatin1Char('p'))); setIncludedByDefault(false); - connect(ProjectExplorerPlugin::instance(), SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), - this, SLOT(currentProjectChanged(ProjectExplorer::Project*))); + connect(ProjectTree::instance(), &ProjectTree::currentProjectChanged, + this, &CurrentProjectFilter::currentProjectChanged); + connect(SessionManager::instance(), &SessionManager::startupProjectChanged, + this, &CurrentProjectFilter::currentProjectChanged); } void CurrentProjectFilter::markFilesAsOutOfDate() { - QMutexLocker lock(&m_filesUpToDateMutex); Q_UNUSED(lock) - m_filesUpToDate = false; + setFileIterator(0); } void CurrentProjectFilter::prepareSearch(const QString &entry) { Q_UNUSED(entry) - QMutexLocker lock(&m_filesUpToDateMutex); Q_UNUSED(lock) - if (m_filesUpToDate) - return; - files().clear(); - m_filesUpToDate = true; - if (!m_project) - return; - files() = m_project->files(Project::AllFiles); - Utils::sort(files()); - generateFileNames(); + if (!fileIterator()) { + QStringList paths; + if (m_project) { + paths = m_project->files(Project::AllFiles); + Utils::sort(paths); + } + setFileIterator(new BaseFileFilter::ListIterator(paths)); + } + BaseFileFilter::prepareSearch(entry); } -void CurrentProjectFilter::currentProjectChanged(ProjectExplorer::Project *project) +void CurrentProjectFilter::currentProjectChanged(Project *project) { if (project == m_project) return; @@ -91,5 +92,5 @@ void CurrentProjectFilter::currentProjectChanged(ProjectExplorer::Project *proje void CurrentProjectFilter::refresh(QFutureInterface<void> &future) { Q_UNUSED(future) - markFilesAsOutOfDate(); + QTimer::singleShot(0, this, SLOT(markFilesAsOutOfDate())); } |