From 5e9bbb95813078dda2037f5d87113e7e074d0129 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Thu, 1 Feb 2007 19:42:34 +0000 Subject: [PATCH] Fixed SD2-873. Reloading the ToolboxProvider's side tabs before the ToolboxService is created caused the SideTabItemDesigner's ReloadToolbox method to reload the side tabs again whilst they were currently being reloaded causing duplicate Windows Forms side tabs. Attempting to use this second set threw a null reference exception. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2352 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Commands/SideBarCommands.cs | 9 ++++++--- .../Project/Src/ToolboxProvider.cs | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs index b0df00ba09..1a93f32039 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs @@ -6,6 +6,7 @@ // using System; +using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.FormsDesigner.Gui; @@ -15,9 +16,11 @@ namespace ICSharpCode.FormsDesigner { public override void Run() { - ConfigureSideBarDialog configureSideBarDialog = new ConfigureSideBarDialog(); - configureSideBarDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); - ToolboxProvider.ReloadSideTabs(true); + using (ConfigureSideBarDialog configureSideBarDialog = new ConfigureSideBarDialog()) { + if (configureSideBarDialog.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { + ToolboxProvider.ReloadSideTabs(true); + } + } } } } diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs index 42385ccae2..2e606bda10 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs @@ -37,16 +37,21 @@ namespace ICSharpCode.FormsDesigner } public static ICSharpCode.FormsDesigner.Services.ToolboxService ToolboxService { get { - if (toolboxService == null) { - toolboxService = new ICSharpCode.FormsDesigner.Services.ToolboxService(); - ReloadSideTabs(false); - toolboxService.SelectedItemUsed += new EventHandler(SelectedToolUsedHandler); - SharpDevelopSideBar.SideBar.SideTabDeleted += SideTabDeleted; - } + CreateToolboxService(); return toolboxService; } } + static void CreateToolboxService() + { + if (toolboxService == null) { + toolboxService = new ICSharpCode.FormsDesigner.Services.ToolboxService(); + ReloadSideTabs(false); + toolboxService.SelectedItemUsed += new EventHandler(SelectedToolUsedHandler); + SharpDevelopSideBar.SideBar.SideTabDeleted += SideTabDeleted; + } + } + static ToolboxProvider() { PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(SideBarView)); @@ -86,6 +91,7 @@ namespace ICSharpCode.FormsDesigner public static void ReloadSideTabs(bool doInsert) { + CreateToolboxService(); bool reInsertTabs = false; foreach(SideTab tab in SideTabs) { tab.ItemRemoved -= SideTabItemRemoved;