diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs index b78e322bc5..db569a756c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentView.cs @@ -50,6 +50,7 @@ namespace MonoDevelop.Ide.Gui.Documents bool contentVisible; DocumentView parent; bool disposed; + bool closed; bool hasFocus; bool shown; @@ -292,12 +293,21 @@ namespace MonoDevelop.Ide.Gui.Documents public void Dispose () { + Close (); if (!disposed) { disposed = true; OnDispose (); } } + internal void Close () + { + if (!closed) { + closed = true; + OnClosed (); + } + } + internal virtual void SetActiveChild (DocumentView child) { if (AttachedViews.Contains (child)) { @@ -458,6 +468,12 @@ namespace MonoDevelop.Ide.Gui.Documents SourceController?.Dispose (); } + internal virtual void OnClosed () + { + // If this view was created by a controller, dispose the controller here too. + SourceController?.Close (); + } + internal virtual IEnumerable<DocumentController> GetActiveControllerHierarchy () { if (SourceController != null) |