diff options
author | Alan McGovern <alan.mcgovern@gmail.com> | 2012-10-12 15:00:52 +0400 |
---|---|---|
committer | Alan McGovern <alan.mcgovern@gmail.com> | 2012-10-12 15:00:52 +0400 |
commit | 249b96125c33c3519fbc07e2d80321617a3e3844 (patch) | |
tree | 8f35defbacc4205449022e1035d8b6ae5996670d /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs | |
parent | adc4d66bc1ad1b206e6bbd9a3177baf43842b079 (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.cs | 35 |
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); } |