Browse Source

Fixed updating of the IWorkbench.ActiveWorkbenchWindow property.

This fixes the bug "System.NullReferenceException in AvalonDock.DocumentContent.Close()"

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5536 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 16 years ago
parent
commit
87de67e1ef
  1. 1
      src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs
  2. 23
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs
  3. 3
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

1
src/Main/Base/Project/Src/Gui/IWorkbenchLayout.cs

@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -40,6 +40,7 @@ namespace ICSharpCode.SharpDevelop.Gui
get;
}
event EventHandler ActiveWorkbenchWindowChanged;
event EventHandler ActiveContentChanged;
/// <summary>

23
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonDockLayout.cs

@ -63,27 +63,26 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -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 @@ -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()

3
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -89,12 +89,15 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -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);
};
}

Loading…
Cancel
Save