diff --git a/src/plugins/projectexplorer/allprojectsfilter.cpp b/src/plugins/projectexplorer/allprojectsfilter.cpp index 7ab9bb4ce925fbbb5740b89510c99eb1ab168640..24a396d1fc76ad7bcad91bbe01da902d465009ce 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.cpp +++ b/src/plugins/projectexplorer/allprojectsfilter.cpp @@ -40,16 +40,24 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; AllProjectsFilter::AllProjectsFilter(ProjectExplorerPlugin *pe) + : m_projectExplorer(pe), m_filesUpToDate(false) { - m_projectExplorer = pe; connect(m_projectExplorer, SIGNAL(fileListChanged()), - this, SLOT(refreshInternally())); + this, SLOT(markFilesAsOutOfDate())); setShortcutString("a"); setIncludedByDefault(true); } -void AllProjectsFilter::refreshInternally() +void AllProjectsFilter::markFilesAsOutOfDate() { + m_filesUpToDate = false; +} + +void AllProjectsFilter::updateFiles() +{ + if (m_filesUpToDate) + return; + m_filesUpToDate = true; m_files.clear(); SessionManager *session = m_projectExplorer->session(); if (!session) @@ -64,7 +72,7 @@ void AllProjectsFilter::refresh(QFutureInterface<void> &future) { Q_UNUSED(future); // invokeAsyncronouslyOnGuiThread - connect(this, SIGNAL(invokeRefresh()), this, SLOT(refreshInternally())); + connect(this, SIGNAL(invokeRefresh()), this, SLOT(markFilesAsOutOfDate())); emit invokeRefresh(); - disconnect(this, SIGNAL(invokeRefresh()), this, SLOT(refreshInternally())); + disconnect(this, SIGNAL(invokeRefresh()), this, SLOT(markFilesAsOutOfDate())); } diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h index f486580943164bcdf3791fa87b6eb1bc8498a334..f0cf3afea05d7ee0e6a76ec5862b4ffdec0540ff 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.h +++ b/src/plugins/projectexplorer/allprojectsfilter.h @@ -53,12 +53,16 @@ public: QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } void refresh(QFutureInterface<void> &future); +protected: + void updateFiles(); + private slots: - void refreshInternally(); + void markFilesAsOutOfDate(); signals: void invokeRefresh(); private: ProjectExplorerPlugin *m_projectExplorer; + bool m_filesUpToDate; }; } // namespace Internal diff --git a/src/plugins/quickopen/basefilefilter.cpp b/src/plugins/quickopen/basefilefilter.cpp index ae09c3128c7ff19256411ed2397eaf706d5e9545..c895af5a7c27f75766b2e63e937482b50a373cd6 100644 --- a/src/plugins/quickopen/basefilefilter.cpp +++ b/src/plugins/quickopen/basefilefilter.cpp @@ -43,6 +43,7 @@ BaseFileFilter::BaseFileFilter() QList<FilterEntry> BaseFileFilter::matchesFor(const QString &origEntry) { + updateFiles(); QList<FilterEntry> matches; QList<FilterEntry> badMatches; QString needle = trimWildcards(origEntry); @@ -104,3 +105,7 @@ void BaseFileFilter::generateFileNames() } m_forceNewSearchList = true; } + +void BaseFileFilter::updateFiles() +{ +} diff --git a/src/plugins/quickopen/basefilefilter.h b/src/plugins/quickopen/basefilefilter.h index e1ff1e10f20b57122a81ce79dc3b6cef3cda0158..30bf059132557aa1b18cbba542fba9ec5e38d177 100644 --- a/src/plugins/quickopen/basefilefilter.h +++ b/src/plugins/quickopen/basefilefilter.h @@ -48,6 +48,7 @@ public: void accept(QuickOpen::FilterEntry selection) const; protected: + virtual void updateFiles(); void generateFileNames(); QStringList m_files;