From b5d6bf73d6d4bfc132a33dd00766e426d42ec6dd Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 5 Oct 2009 13:43:05 +0200 Subject: [PATCH] Ensure the user can stop a semantic search and added a method to get a pointer to the ModelManagerInterface. --- src/plugins/cpptools/cppfindreferences.cpp | 6 ++++++ src/plugins/cpptools/cppmodelmanager.cpp | 9 +++++++++ src/plugins/cpptools/cppmodelmanagerinterface.h | 2 ++ src/plugins/cpptools/cppsemanticsearch.cpp | 6 ++++++ 4 files changed, 23 insertions(+) diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index fcbce895bf5..a55a9e95eb1 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -466,6 +466,12 @@ static void find_helper(QFutureInterface<Utils::FileSearchResult> &future, future.setProgressRange(0, files.size()); for (int i = 0; i < files.size(); ++i) { + if (future.isPaused()) + future.waitForResume(); + + if (future.isCanceled()) + break; + const QString &fileName = files.at(i); future.setProgressValueAndText(i, QFileInfo(fileName).fileName()); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 8aa6bdf7672..4d5f0bd2c4d 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -56,6 +56,8 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/progressmanager/progressmanager.h> +#include <extensionsystem/pluginmanager.h> + #include <utils/qtcassert.h> #include <TranslationUnit.h> @@ -588,6 +590,13 @@ Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc) } +CppTools::CppModelManagerInterface *CppTools::CppModelManagerInterface::instance() +{ + ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance(); + return pluginManager->getObject<CppTools::CppModelManagerInterface>(); + +} + /*! \class CppTools::CppModelManager diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index 0a2ba32e380..4bb7a109cb4 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -81,6 +81,8 @@ public: CppModelManagerInterface(QObject *parent = 0) : QObject(parent) {} virtual ~CppModelManagerInterface() {} + static CppModelManagerInterface *instance(); + virtual void GC() = 0; virtual void updateSourceFiles(const QStringList &sourceFiles) = 0; diff --git a/src/plugins/cpptools/cppsemanticsearch.cpp b/src/plugins/cpptools/cppsemanticsearch.cpp index 9d35f7aed48..bc8510625bb 100644 --- a/src/plugins/cpptools/cppsemanticsearch.cpp +++ b/src/plugins/cpptools/cppsemanticsearch.cpp @@ -272,6 +272,12 @@ static void semanticSearch_helper(QFutureInterface<Utils::FileSearchResult> &fut int progress = 0; foreach (Document::Ptr doc, snapshot) { + if (future.isPaused()) + future.waitForResume(); + + if (future.isCanceled()) + break; + const QString fileName = doc->fileName(); QByteArray source; -- GitLab