Abort expensive cancelled computations.

This commit is contained in:
Roberto Raggi
2010-09-07 11:41:48 +02:00
parent 5ea1efb55f
commit f7b555b785
22 changed files with 50 additions and 24 deletions

View File

@@ -58,7 +58,7 @@ CppCurrentDocumentFilter::CppCurrentDocumentFilter(CppModelManager *manager, Cor
this, SLOT(onEditorAboutToClose(Core::IEditor*)));
}
QList<Locator::FilterEntry> CppCurrentDocumentFilter::matchesFor(const QString & origEntry)
QList<Locator::FilterEntry> CppCurrentDocumentFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString & origEntry)
{
QString entry = trimWildcards(origEntry);
QList<Locator::FilterEntry> goodEntries;
@@ -82,6 +82,9 @@ QList<Locator::FilterEntry> CppCurrentDocumentFilter::matchesFor(const QString &
foreach (const ModelItemInfo & info, m_itemsOfCurrentDoc)
{
if (future.isCanceled())
break;
if ((hasWildcard && regexp.exactMatch(info.symbolName))
|| (!hasWildcard && matcher.indexIn(info.symbolName) != -1))
{

View File

@@ -53,7 +53,7 @@ public:
QString displayName() const { return tr("Methods in current Document"); }
QString id() const { return QLatin1String("Methods in current Document"); }
Priority priority() const { return Medium; }
QList<Locator::FilterEntry> matchesFor(const QString &entry);
QList<Locator::FilterEntry> matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry);
void accept(Locator::FilterEntry selection) const;
void refresh(QFutureInterface<void> &future);

View File

@@ -76,7 +76,7 @@ static bool compareLexigraphically(const Locator::FilterEntry &a,
return a.displayName < b.displayName;
}
QList<Locator::FilterEntry> CppLocatorFilter::matchesFor(const QString &origEntry)
QList<Locator::FilterEntry> CppLocatorFilter::matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &origEntry)
{
QString entry = trimWildcards(origEntry);
QList<Locator::FilterEntry> goodEntries;
@@ -90,6 +90,9 @@ QList<Locator::FilterEntry> CppLocatorFilter::matchesFor(const QString &origEntr
QHashIterator<QString, QList<ModelItemInfo> > it(m_searchList);
while (it.hasNext()) {
if (future.isCanceled())
break;
it.next();
const QList<ModelItemInfo> items = it.value();

View File

@@ -48,7 +48,7 @@ public:
QString displayName() const { return tr("Classes and Methods"); }
QString id() const { return QLatin1String("Classes and Methods"); }
Priority priority() const { return Medium; }
QList<Locator::FilterEntry> matchesFor(const QString &entry);
QList<Locator::FilterEntry> matchesFor(QFutureInterface<Locator::FilterEntry> &future, const QString &entry);
void accept(Locator::FilterEntry selection) const;
void refresh(QFutureInterface<void> &future);