Browse Source

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
shortcuts
Matt Ward 19 years ago
parent
commit
5e9bbb9581
  1. 9
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs
  2. 18
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

9
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Commands/SideBarCommands.cs

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.FormsDesigner.Gui;
@ -15,9 +16,11 @@ namespace ICSharpCode.FormsDesigner @@ -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);
}
}
}
}
}

18
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/ToolboxProvider.cs

@ -37,16 +37,21 @@ namespace ICSharpCode.FormsDesigner @@ -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 @@ -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;

Loading…
Cancel
Save