diff options
author | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2016-03-27 13:07:40 +0300 |
---|---|---|
committer | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2016-03-27 13:07:40 +0300 |
commit | 7fb96582e9f9a14394b654d0ada2e8bf5780364b (patch) | |
tree | e6f20a1b071235c48d0b061de42311b5902b86b1 /main/src/addins/MonoDevelop.AssemblyBrowser | |
parent | 18bb88f6c827e470837f239cd695d6af9ec769c8 (diff) |
[Ide] Experimental change from single addchild to packing children updates in tree view nodes
This change is going to bring speed improvements after the optimizations done to AppendValues inside Gtk# are released.
Batch calls to AddChild, as the collection insertion is guarded against multiple resorts on insertion.
Diffstat (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser')
4 files changed, 6 insertions, 16 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs index ac38080917..ed73ec940b 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs @@ -89,12 +89,8 @@ namespace MonoDevelop.AssemblyBrowser var ns = namespaces [namespaceName]; ns.Types.Add (type); } - - foreach (var ns in namespaces.Values) { - if (publicOnly && !ns.Types.Any (t => t.IsPublic)) - continue; - treeBuilder.AddChild (ns); - } + + treeBuilder.AddChildren (namespaces.Values.Where (ns => !publicOnly || ns.Types.Any (t => t.IsPublic))); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs index 283b5c6e54..bf90fb52c7 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs @@ -72,10 +72,8 @@ namespace MonoDevelop.AssemblyBrowser // ctx.AddChild (new Error (MonoDevelop.Core.GettextCatalog.GetString ("Error while loading:") + assemblyNameReference.FullName + "/" + e.Message));
}
}
-
- foreach (ModuleReference moduleRef in referenceFolder.ModuleReferences) {
- ctx.AddChild (moduleRef);
- }
+
+ ctx.AddChildren (referenceFolder.ModuleReferences);
}
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs index 2eb286fa19..f699a83fe6 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs @@ -54,9 +54,7 @@ namespace MonoDevelop.AssemblyBrowser public override void BuildChildNodes (ITreeBuilder ctx, object dataObject) { var resourceFolder = (AssemblyResourceFolder)dataObject; - foreach (object resource in resourceFolder.Resources) { - ctx.AddChild (resource); - } + ctx.AddChildren (resourceFolder.Resources); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs index 497e590111..acf0f19327 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs @@ -100,9 +100,7 @@ namespace MonoDevelop.AssemblyBrowser public override void BuildChildNodes (ITreeBuilder builder, object dataObject) { var baseTypeFolder = (BaseTypeFolder)dataObject; - foreach (var type in baseTypeFolder.Type.BaseTypes) { - builder.AddChild (type); - } + builder.AddChildren (baseTypeFolder.Type.BaseTypes); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) { |