From 01dd85bc00c98d822f88efd0cb81dc13a8719364 Mon Sep 17 00:00:00 2001 From: con Date: Mon, 28 Mar 2011 13:35:43 +0200 Subject: [PATCH] Fix progress bar for searching in files. Affects e.g. Advanced Find->All Projects. Progress bar was not updating at all, except at the end of the search. The fix is a workaround for regression in QFutureInterface::isProgressUpdateNeeded that would no longer return true the very first time in Qt 4.7. To be reverted when this is fixed in a released Qt version. Reviewed-by: dt --- src/libs/utils/filesearch.cpp | 6 ++++-- src/plugins/locator/directoryfilter.cpp | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/filesearch.cpp b/src/libs/utils/filesearch.cpp index c576e32f973..c38d1606da3 100644 --- a/src/libs/utils/filesearch.cpp +++ b/src/libs/utils/filesearch.cpp @@ -178,7 +178,8 @@ void runFileSearch(QFutureInterface &future, } ++numFilesSearched; - if (future.isProgressUpdateNeeded()) { + if (future.isProgressUpdateNeeded() + || future.progressValue() == 0 /*workaround for regression in Qt*/) { if (!results.isEmpty()) { future.reportResult(results); results.clear(); @@ -256,7 +257,8 @@ void runFileSearchRegExp(QFutureInterface &future, ++lineNr; } ++numFilesSearched; - if (future.isProgressUpdateNeeded()) { + if (future.isProgressUpdateNeeded() + || future.progressValue() == 0 /*workaround for regression in Qt*/) { if (!results.isEmpty()) { future.reportResult(results); results.clear(); diff --git a/src/plugins/locator/directoryfilter.cpp b/src/plugins/locator/directoryfilter.cpp index 2779ebae145..45d1319a653 100644 --- a/src/plugins/locator/directoryfilter.cpp +++ b/src/plugins/locator/directoryfilter.cpp @@ -203,7 +203,8 @@ void DirectoryFilter::refresh(QFutureInterface &future) QStringList filesFound; while (!future.isCanceled() && it.hasNext()) { filesFound << it.next(); - if (future.isProgressUpdateNeeded()) { + if (future.isProgressUpdateNeeded() + || future.progressValue() == 0 /*workaround for regression in Qt*/) { future.setProgressValueAndText(it.currentProgress(), tr("%1 filter update: %n files", 0, filesFound.size()).arg(m_name)); }