diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs
index c3a6c70f38..845bf1f253 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs
@@ -44,7 +44,7 @@ namespace ICSharpCode.WixBinding
TitleName = StringParser.Parse("${res:ICSharpCode.WixBinding.PackageFilesView.Title}");
this.project = project;
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
}
public static PackageFilesView ActiveView {
@@ -98,7 +98,7 @@ namespace ICSharpCode.WixBinding
public override void Dispose()
{
if (packageFilesControl != null) {
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= ActiveWorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged -= ActiveViewContentChanged;
packageFilesControl.Dispose();
packageFilesControl = null;
}
@@ -214,7 +214,7 @@ namespace ICSharpCode.WixBinding
/// Wix document then we update the document's contents. When the user switches
/// back we reload the view if the corresponding Wix document is open.
///
- void ActiveWorkbenchWindowChanged(object source, EventArgs e)
+ void ActiveViewContentChanged(object source, EventArgs e)
{
if (IsWixDocumentWindowActive) {
if (IsDirty) {
@@ -238,7 +238,7 @@ namespace ICSharpCode.WixBinding
get {
WixDocument document = packageFilesControl.Document;
if (document != null) {
- IViewContent view = WorkbenchSingleton.Workbench.ActiveContent as IViewContent;
+ IViewContent view = WorkbenchSingleton.Workbench.ActiveViewContent;
if (view != null) {
return FileUtility.IsEqualFileName(view.PrimaryFileName, document.FileName);
}
@@ -252,7 +252,7 @@ namespace ICSharpCode.WixBinding
///
bool IsActiveWindow {
get {
- return Object.ReferenceEquals(WorkbenchSingleton.Workbench.ActiveContent, this);
+ return Object.ReferenceEquals(WorkbenchSingleton.Workbench.ActiveViewContent, this);
}
}
diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
index 07a2ed321e..61aa640332 100644
--- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
+++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesigner.cs
@@ -71,9 +71,9 @@ namespace ICSharpCode.WixBinding
JumpToDialogElement(id);
if (base.IsFormsDesignerVisible) {
// Reload so the correct dialog is displayed.
- SaveToPrimary();
+ base.SaveToPrimary();
DialogId = id;
- LoadFromPrimary();
+ base.LoadFromPrimary();
} else {
// Need to open the designer.
DialogId = id;
@@ -81,22 +81,7 @@ namespace ICSharpCode.WixBinding
}
}
- /* //DG:
- ///
- /// Set dialog id to null after calling base.Deselecting since base.Deselecting
- /// calls MergeFormChanges which will reference this dialog id.
- ///
- public override void Deselecting()
- {
- base.Deselecting();
- DialogId = null;
- RemoveWixToolboxSideTab();
- }
-
- ///
- /// Designer has been selected.
- ///
- public override void Selected()
+ protected override void LoadFromPrimary()
{
try {
if (!ignoreDialogIdSelectedInTextEditor) {
@@ -114,20 +99,8 @@ namespace ICSharpCode.WixBinding
DialogId = "InvalidXML";
AddToErrorList(ex);
}
- base.Selected();
- RemoveFormsDesignerToolboxSideTabs();
- AddWixToolboxSideTab();
- }
-
- ///
- /// Removes the WinForms toolbox side tabs.
- ///
- public override void SwitchedTo()
- {
- base.SwitchedTo();
- RemoveFormsDesignerToolboxSideTabs();
+ base.LoadFromPrimary();
}
- */
///
/// Gets the Wix document filename.
diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
index 9f4132b177..0ac294373f 100644
--- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
+++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/DesignerViewContent.cs
@@ -359,6 +359,7 @@ namespace ICSharpCode.FormsDesigner
protected override void LoadFromPrimary()
{
+ UnloadDesigner();
Reload();
}
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
index f1f34e83ae..8ec5025b6c 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XPathQueryPad.cs
@@ -23,7 +23,7 @@ namespace ICSharpCode.XmlEditor
public XPathQueryPad()
{
xPathQueryControl = new XPathQueryControl();
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
Properties properties = PropertyService.Get(XPathQueryControlProperties, new Properties());
xPathQueryControl.SetMemento(properties);
instance = this;
@@ -48,7 +48,7 @@ namespace ICSharpCode.XmlEditor
{
if (!disposed) {
disposed = true;
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= ActiveWorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged -= ActiveViewContentChanged;
Properties properties = xPathQueryControl.CreateMemento();
PropertyService.Set(XPathQueryControlProperties, properties);
xPathQueryControl.Dispose();
@@ -60,7 +60,7 @@ namespace ICSharpCode.XmlEditor
xPathQueryControl.RemoveXPathNodeTextMarkers();
}
- void ActiveWorkbenchWindowChanged(object source, EventArgs e)
+ void ActiveViewContentChanged(object source, EventArgs e)
{
xPathQueryControl.ActiveWindowChanged();
}
diff --git a/src/Main/Base/Project/Src/Gui/IWorkbench.cs b/src/Main/Base/Project/Src/Gui/IWorkbench.cs
index 105b3371bf..47e83282c5 100644
--- a/src/Main/Base/Project/Src/Gui/IWorkbench.cs
+++ b/src/Main/Base/Project/Src/Gui/IWorkbench.cs
@@ -47,14 +47,14 @@ namespace ICSharpCode.SharpDevelop.Gui
///
/// The active workbench window.
+ /// This is the window containing the active view content.
///
IWorkbenchWindow ActiveWorkbenchWindow {
get;
}
///
- /// Is called, when the workbench window which the user has into
- /// the foreground (e.g. editable) changed to a new one.
+ /// Is called, when the ActiveWorkbenchWindow property changes.
///
event EventHandler ActiveWorkbenchWindowChanged;
@@ -71,13 +71,19 @@ namespace ICSharpCode.SharpDevelop.Gui
event EventHandler ActiveViewContentChanged;
///
- /// The active content. This can be either a IViewContent or a IPadContent, depending on
- /// where the focus currently is.
+ /// The active content, depending on where the focus currently is.
+ /// If a document is currently active, this will be equal to ActiveViewContent,
+ /// if a pad has the focus, this property will return the IPadContent instance.
///
object ActiveContent {
get;
}
+ ///
+ /// Is called, when the active content has changed.
+ ///
+ event EventHandler ActiveContentChanged;
+
IWorkbenchLayout WorkbenchLayout {
get;
set;
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
index 1fa2dcd6ab..d6bed2e01d 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
@@ -82,11 +82,11 @@ namespace ICSharpCode.SharpDevelop.Project
ProjectService.SolutionClosed += ProjectServiceSolutionClosed;
ProjectService.SolutionPreferencesSaving += ProjectServiceSolutionPreferencesSaving;
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveContentChanged += ActiveContentChanged;
if (ProjectService.OpenSolution != null) {
ProjectServiceSolutionLoaded(null, new SolutionEventArgs(ProjectService.OpenSolution));
}
- ActiveWindowChanged(null, null);
+ ActiveContentChanged(null, null);
}
public void StartLabelEdit(ExtTreeNode node)
@@ -112,7 +112,7 @@ namespace ICSharpCode.SharpDevelop.Project
string lastFileName;
- void ActiveWindowChanged(object sender, EventArgs e)
+ void ActiveContentChanged(object sender, EventArgs e)
{
if (WorkbenchSingleton.Workbench.ActiveContent == this) {
projectBrowserPanel.ProjectBrowserControl.PadActivated();
diff --git a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
index a2bcad7047..2b87766fc6 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
@@ -97,7 +97,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- void WorkbenchWindowChanged(object sender, EventArgs e)
+ void WorkbenchActiveContentChanged(object sender, EventArgs e)
{
IHasPropertyContainer c = WorkbenchSingleton.Workbench.ActiveContent as IHasPropertyContainer;
if (c == null) {
@@ -148,8 +148,8 @@ namespace ICSharpCode.SharpDevelop.Gui
grid.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Views/PropertyPad/ContextMenu");
LoggingService.Debug("PropertyPad created");
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged;
- WorkbenchWindowChanged(null, null);
+ WorkbenchSingleton.Workbench.ActiveContentChanged += WorkbenchActiveContentChanged;
+ WorkbenchActiveContentChanged(null, null);
}
void CombineClosedEvent(object sender, EventArgs e)
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
index 6394a33cb6..d4fca007d8 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ToolsPad.cs
@@ -44,8 +44,8 @@ namespace ICSharpCode.SharpDevelop.Gui
panel.Controls.Add(noToolsAvailable);
child = noToolsAvailable;
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged;
- WorkbenchWindowChanged(null, null);
+ WorkbenchSingleton.Workbench.ActiveContentChanged += WorkbenchActiveContentChanged;
+ WorkbenchActiveContentChanged(null, null);
}
void SetChild(Control newChild)
@@ -58,7 +58,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- void WorkbenchWindowChanged(object sender, EventArgs e)
+ void WorkbenchActiveContentChanged(object sender, EventArgs e)
{
IToolsHost th = WorkbenchSingleton.Workbench.ActiveContent as IToolsHost;
if (th == null) {
diff --git a/src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
index bd4452ed2f..19d3f25193 100644
--- a/src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
+++ b/src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
@@ -136,8 +136,10 @@ namespace ICSharpCode.SharpDevelop.Gui
if (layout == null) {
this.ActiveWorkbenchWindow = null;
+ this.ActiveContent = null;
} else {
this.ActiveWorkbenchWindow = layout.ActiveWorkbenchWindow;
+ this.ActiveContent = layout.ActiveContent;
}
}
@@ -157,13 +159,13 @@ namespace ICSharpCode.SharpDevelop.Gui
if (activeWorkbenchWindow != null) {
activeWorkbenchWindow.ActiveViewContentChanged += OnWorkbenchActiveViewContentChanged;
}
+
+ if (ActiveWorkbenchWindowChanged != null) {
+ ActiveWorkbenchWindowChanged(this, EventArgs.Empty);
+ }
+
OnWorkbenchActiveViewContentChanged(null, null);
}
- // raise even when activeWorkbenchWindow didn't change because we also use
- // ActiveWorkbenchWindowChanged to signal changes in ActiveContent (when switching between pads)
- if (ActiveWorkbenchWindowChanged != null) {
- ActiveWorkbenchWindowChanged(this, EventArgs.Empty);
- }
}
}
@@ -175,6 +177,8 @@ namespace ICSharpCode.SharpDevelop.Gui
this.ActiveViewContent = window.ActiveViewContent;
else
this.ActiveViewContent = null;
+
+ this.ActiveContent = layout.ActiveContent;
}
public event EventHandler ActiveWorkbenchWindowChanged;
@@ -204,14 +208,26 @@ namespace ICSharpCode.SharpDevelop.Gui
///
public event EventHandler ActiveViewContentChanged;
+ object activeContent;
+
public object ActiveContent {
get {
- if (layout == null) {
- return null;
+ return activeContent;
+ }
+ private set {
+ if (activeContent != value) {
+ activeContent = value;
+ if (ActiveContentChanged != null) {
+ ActiveContentChanged(this, EventArgs.Empty);
+ }
}
- return layout.ActiveContent;
}
}
+
+ ///
+ /// Is called, when the active content has changed.
+ ///
+ public event EventHandler ActiveContentChanged;
#endregion
public DefaultWorkbench()
diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
index 683f4c756f..e990fb83b7 100644
--- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
+++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
@@ -102,6 +102,16 @@ namespace ICSharpCode.SharpDevelop.Gui
// initialize workbench-dependent services:
Project.ProjectService.InitializeService();
NavigationService.InitializeService();
+
+ workbench.ActiveContentChanged += delegate {
+ Console.WriteLine("ActiveContentChanged to " + workbench.ActiveContent);
+ };
+ workbench.ActiveViewContentChanged += delegate {
+ Console.WriteLine("ActiveViewContentChanged to " + workbench.ActiveViewContent);
+ };
+ workbench.ActiveWorkbenchWindowChanged += delegate {
+ Console.WriteLine("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow);
+ };
}
///
diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
index 319b84e0ae..4f5f0d84cd 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
@@ -513,8 +513,8 @@ namespace ICSharpCode.SharpDevelop
defaultProjectContent.AddReferencedContent(ParserService.GetProjectContentForReference(item));
}
if (WorkbenchSingleton.Workbench != null) {
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += delegate {
- if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) {
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged += delegate {
+ if (WorkbenchSingleton.Workbench.ActiveViewContent != null) {
string file = WorkbenchSingleton.Workbench.ActiveViewContent.PrimaryFileName;
if (file != null) {
IParser parser = GetParser(file);
diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
index 24779b8829..681f857ad5 100644
--- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
+++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs
@@ -60,7 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project
{
if (!initialized) {
initialized = true;
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += ActiveWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged += ActiveViewContentChanged;
FileService.FileRenamed += FileServiceFileRenamed;
FileService.FileRemoved += FileServiceFileRemoved;
}
@@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
- static void ActiveWindowChanged(object sender, EventArgs e)
+ static void ActiveViewContentChanged(object sender, EventArgs e)
{
IViewContent viewContent = WorkbenchSingleton.Workbench.ActiveViewContent;
if (OpenSolution == null || viewContent == null) {
diff --git a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs
index 0f23ce88dd..3992a43396 100644
--- a/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs
+++ b/src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Gui/SearchAndReplacePanel.cs
@@ -341,7 +341,7 @@ namespace SearchAndReplace
return null;
}
- void WorkbenchWindowChanged(object source, EventArgs e)
+ void WorkbenchActiveViewContentChanged(object source, EventArgs e)
{
TextEditorControl activeTextEditorControl = SearchReplaceUtilities.GetActiveTextEditor();
if (activeTextEditorControl != this.textEditor) {
@@ -369,7 +369,7 @@ namespace SearchAndReplace
void RemoveActiveWindowChangedHandler()
{
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged -= WorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged -= WorkbenchActiveViewContentChanged;
}
///
@@ -398,7 +398,7 @@ namespace SearchAndReplace
findFirst = true;
selection = GetCurrentTextSelection();
AddSelectionChangedHandler(SearchReplaceUtilities.GetActiveTextEditor());
- WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += WorkbenchWindowChanged;
+ WorkbenchSingleton.Workbench.ActiveViewContentChanged += WorkbenchActiveViewContentChanged;
}
void RemoveSelectionSearchHandlers()