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:
authorMike Krüger <mkrueger@xamarin.com>2012-10-30 15:37:42 +0400
committerMike Krüger <mkrueger@xamarin.com>2012-10-30 15:37:42 +0400
commit2d9f1d3fa5390088e6cd25affba6850a0295baaf (patch)
treeefb4601b20c0349ec0b829a3cac070572bfd7ad6 /main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
parent4e9e8cccd7321f50f2a47685f63ee02e9b648852 (diff)
[Ide] Optimized search categories.
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.cs20
1 files changed, 9 insertions, 11 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 1acb0c8ebd..3ea77b3d91 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs
@@ -74,13 +74,13 @@ namespace MonoDevelop.Components.MainToolbar
WorkerResult lastResult;
string[] validTags = new [] { "f", "file"};
- public override Task<ISearchDataSource> GetResults (SearchPopupSearchPattern searchPattern, CancellationToken token)
+ public override Task<ISearchDataSource> GetResults (SearchPopupSearchPattern searchPattern, int resultsCount, CancellationToken token)
{
return Task.Factory.StartNew (delegate {
+ if (searchPattern.Tag != null && !validTags.Contains (searchPattern.Tag))
+ return null;
try {
- if (searchPattern.Tag != null && !validTags.Contains (searchPattern.Tag))
- return null;
- WorkerResult newResult = new WorkerResult (widget);
+ var newResult = new WorkerResult (widget);
newResult.pattern = searchPattern.Pattern;
newResult.IncludeFiles = true;
newResult.IncludeTypes = true;
@@ -90,11 +90,8 @@ namespace MonoDevelop.Components.MainToolbar
newResult.matcher = StringMatcher.GetMatcher (toMatch, false);
newResult.FullSearch = true;
- foreach (SearchResult result in AllResults (lastResult, newResult)) {
- token.ThrowIfCancellationRequested ();
- newResult.results.AddResult (result);
- }
- newResult.results.Sort (new DataItemComparer (token));
+ AllResults (lastResult, newResult, token);
+ newResult.results.SortUpToN (new DataItemComparer (token), resultsCount);
lastResult = newResult;
return (ISearchDataSource)newResult.results;
} catch {
@@ -104,7 +101,7 @@ namespace MonoDevelop.Components.MainToolbar
}, token);
}
- IEnumerable<SearchResult> AllResults (WorkerResult lastResult, WorkerResult newResult)
+ void AllResults (WorkerResult lastResult, WorkerResult newResult, CancellationToken token)
{
// Search files
if (newResult.IncludeFiles) {
@@ -112,10 +109,11 @@ namespace MonoDevelop.Components.MainToolbar
bool startsWithLastFilter = lastResult != null && lastResult.pattern != null && newResult.pattern.StartsWith (lastResult.pattern) && lastResult.filteredFiles != null;
IEnumerable<ProjectFile> allFiles = startsWithLastFilter ? lastResult.filteredFiles : files;
foreach (ProjectFile file in allFiles) {
+ token.ThrowIfCancellationRequested ();
SearchResult curResult = newResult.CheckFile (file);
if (curResult != null) {
newResult.filteredFiles.Add (file);
- yield return curResult;
+ newResult.results.Add (curResult);
}
}
}