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:
authormkrueger <mkrueger@novell.com>2011-02-28 15:42:37 +0300
committermkrueger <mkrueger@novell.com>2011-02-28 15:42:37 +0300
commit7219daf3f61496439b5c10b59602eae478d7ddcf (patch)
treea556ac3646e67c9222daa33fb17734d954f8356e /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles
parent9ef509c2352747e54bca961c662dd5e566902fa6 (diff)
Fixed 'Bug 674898 - Rename command hangs GUI while finding
references'.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs28
1 files changed, 22 insertions, 6 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs
index f0a9c56dbc..f2cabc389b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs
@@ -66,15 +66,13 @@ namespace MonoDevelop.Ide.FindInFiles
return codon != null ? codon.ReferenceFinder : null;
}
- public abstract IEnumerable<MemberReference> FindReferences (ProjectDom dom, FilePath fileName, INode member);
-
- public static IEnumerable<MemberReference> FindReferences (INode member)
+ public static IEnumerable<MemberReference> FindReferences (INode member, ISearchProgressMonitor monitor = null)
{
- return FindReferences (IdeApp.ProjectOperations.CurrentSelectedSolution, member);
+ return FindReferences (IdeApp.ProjectOperations.CurrentSelectedSolution, member, monitor);
}
-
- public static IEnumerable<MemberReference> FindReferences (Solution solution, INode member)
+
+ public static IEnumerable<MemberReference> FindReferences (Solution solution, INode member, ISearchProgressMonitor monitor = null)
{
var scope = GetScope (member);
ReferenceFinder finder;
@@ -113,6 +111,9 @@ namespace MonoDevelop.Ide.FindInFiles
case RefactoryScope.Project:
if (dom == null)
yield break;
+ if (monitor != null)
+ monitor.BeginTask (GettextCatalog.GetString ("Search reference in project..."), dom.Project.Files.Count);
+ int counter = 0;
foreach (var file in dom.Project.Files) {
finder = GetReferenceFinder (DesktopService.GetMimeTypeForUri (file.FilePath));
if (finder == null)
@@ -122,10 +123,19 @@ namespace MonoDevelop.Ide.FindInFiles
yield return foundReference;
}
}
+ if (monitor != null) {
+ if (counter % 10 == 0)
+ monitor.Step (10);
+ counter++;
+ }
}
+ if (monitor != null)
+ monitor.EndTask ();
break;
case RefactoryScope.Solution:
+ if (monitor != null)
+ monitor.BeginTask (GettextCatalog.GetString ("Search reference in solution..."), solution.GetAllProjects ().Count);
foreach (var project in solution.GetAllProjects ()) {
var currentDom = ProjectDomService.GetProjectDom (project);
foreach (var file in project.Files) {
@@ -138,11 +148,17 @@ namespace MonoDevelop.Ide.FindInFiles
}
}
}
+ if (monitor != null)
+ monitor.Step (1);
}
+ if (monitor != null)
+ monitor.EndTask ();
break;
}
}
+ public abstract IEnumerable<MemberReference> FindReferences (ProjectDom dom, FilePath fileName, INode member);
+
internal static IEnumerable<INode> CollectMembers (ProjectDom dom, IMember member)
{
if (member is IMethod && ((IMethod)member).IsConstructor) {