diff --git a/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs b/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs index 3779e037bc..a4433448e7 100644 --- a/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs +++ b/src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs @@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui get; } + event EventHandler ActiveWorkbenchWindowChanged; event EventHandler ActiveContentChanged; /// diff --git a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs index 234c8cd9d8..86071c0cc0 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs @@ -63,27 +63,26 @@ namespace ICSharpCode.SharpDevelop.Gui void dockingManager_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "ActiveContent") { - UpdateActiveWorkbenchWindow(); if (ActiveContentChanged != null) ActiveContentChanged(this, e); CommandManager.InvalidateRequerySuggested(); } else if (e.PropertyName == "ActiveDocument") { - UpdateActiveWorkbenchWindow(); + if (ActiveWorkbenchWindowChanged != null) + ActiveWorkbenchWindowChanged(this, e); CommandManager.InvalidateRequerySuggested(); } } - public event EventHandler ActiveContentChanged; - - public IWorkbenchWindow ActiveWorkbenchWindow { get; private set; } + public event EventHandler ActiveWorkbenchWindowChanged; - void UpdateActiveWorkbenchWindow() - { - IWorkbenchWindow window = dockingManager.ActiveDocument as IWorkbenchWindow; - if (window != null) - this.ActiveWorkbenchWindow = window; + public IWorkbenchWindow ActiveWorkbenchWindow { + get { + return dockingManager.ActiveDocument as IWorkbenchWindow; + } } + public event EventHandler ActiveContentChanged; + public object ActiveContent { get { object activeContent = dockingManager.ActiveContent; @@ -240,10 +239,6 @@ namespace ICSharpCode.SharpDevelop.Gui void window_Closed(object sender, EventArgs e) { workbenchWindows.Remove((IWorkbenchWindow)sender); - if (this.ActiveWorkbenchWindow == sender) { - this.ActiveWorkbenchWindow = null; - UpdateActiveWorkbenchWindow(); - } } public void LoadConfiguration() diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs index 721547a1ca..10648204fb 100644 --- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs +++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs @@ -89,12 +89,15 @@ namespace ICSharpCode.SharpDevelop.Gui NavigationService.InitializeService(); workbench.ActiveContentChanged += delegate { + Debug.WriteLine("ActiveContentChanged to " + workbench.ActiveContent); LoggingService.Debug("ActiveContentChanged to " + workbench.ActiveContent); }; workbench.ActiveViewContentChanged += delegate { + Debug.WriteLine("ActiveViewContentChanged to " + workbench.ActiveViewContent); LoggingService.Debug("ActiveViewContentChanged to " + workbench.ActiveViewContent); }; workbench.ActiveWorkbenchWindowChanged += delegate { + Debug.WriteLine("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow); LoggingService.Debug("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow); }; }