From 7fb96582e9f9a14394b654d0ada2e8bf5780364b Mon Sep 17 00:00:00 2001 From: Marius Ungureanu Date: Sun, 27 Mar 2016 13:07:40 +0300 Subject: [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. --- .../MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs | 8 ++------ .../TreeNodes/AssemblyReferenceFolderNodeBuilder.cs | 6 ++---- .../TreeNodes/AssemblyResourceFolderNodeBuilder.cs | 4 +--- .../TreeNodes/BaseTypeFolderNodeBuilder.cs | 4 +--- 4 files changed, 6 insertions(+), 16 deletions(-) (limited to 'main/src/addins/MonoDevelop.AssemblyBrowser') 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) { -- cgit v1.2.3