Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan McGovern <alan.mcgovern@gmail.com>2012-10-12 15:00:52 +0400
committerAlan McGovern <alan.mcgovern@gmail.com>2012-10-12 15:00:52 +0400
commit249b96125c33c3519fbc07e2d80321617a3e3844 (patch)
tree8f35defbacc4205449022e1035d8b6ae5996670d /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
parentadc4d66bc1ad1b206e6bbd9a3177baf43842b079 (diff)
[Ide] Consistently handle errors in search categories
Cancellation and errors should be handled correctly across all search categories now.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs35
1 files changed, 20 insertions, 15 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
index 86d49e3f58..1acb0c8ebd 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
@@ -77,25 +77,30 @@ namespace MonoDevelop.Components.MainToolbar
public override Task<ISearchDataSource> GetResults (SearchPopupSearchPattern searchPattern, CancellationToken token)
{
return Task.Factory.StartNew (delegate {
- if (searchPattern.Tag != null && !validTags.Contains (searchPattern.Tag))
- return null;
- WorkerResult newResult = new WorkerResult (widget);
- newResult.pattern = searchPattern.Pattern;
- newResult.IncludeFiles = true;
- newResult.IncludeTypes = true;
- newResult.IncludeMembers = true;
+ try {
+ if (searchPattern.Tag != null && !validTags.Contains (searchPattern.Tag))
+ return null;
+ WorkerResult newResult = new WorkerResult (widget);
+ newResult.pattern = searchPattern.Pattern;
+ newResult.IncludeFiles = true;
+ newResult.IncludeTypes = true;
+ newResult.IncludeMembers = true;
- string toMatch = searchPattern.Pattern;
- newResult.matcher = StringMatcher.GetMatcher (toMatch, false);
- newResult.FullSearch = true;
+ string toMatch = searchPattern.Pattern;
+ newResult.matcher = StringMatcher.GetMatcher (toMatch, false);
+ newResult.FullSearch = true;
- foreach (SearchResult result in AllResults (lastResult, newResult)) {
+ foreach (SearchResult result in AllResults (lastResult, newResult)) {
+ token.ThrowIfCancellationRequested ();
+ newResult.results.AddResult (result);
+ }
+ newResult.results.Sort (new DataItemComparer (token));
+ lastResult = newResult;
+ return (ISearchDataSource)newResult.results;
+ } catch {
token.ThrowIfCancellationRequested ();
- newResult.results.AddResult (result);
+ throw;
}
- newResult.results.Sort (new DataItemComparer (token));
- lastResult = newResult;
- return (ISearchDataSource)newResult.results;
}, token);
}