summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/currentprojectfilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/currentprojectfilter.cpp')
-rw-r--r--src/plugins/projectexplorer/currentprojectfilter.cpp39
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()));
}