diff options
author | mkrueger <mkrueger@novell.com> | 2011-02-28 15:42:37 +0300 |
---|---|---|
committer | mkrueger <mkrueger@novell.com> | 2011-02-28 15:42:37 +0300 |
commit | 7219daf3f61496439b5c10b59602eae478d7ddcf (patch) | |
tree | a556ac3646e67c9222daa33fb17734d954f8356e /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles | |
parent | 9ef509c2352747e54bca961c662dd5e566902fa6 (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.cs | 28 |
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) { |