Browse Source

Close DevTools when inspected window closes.

Steven Kirk 5 years ago
parent
commit
b41c1babe9
1 changed files with 20 additions and 2 deletions
  1. 20 2
      src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs

+ 20 - 2
src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml.cs

@@ -14,8 +14,8 @@ namespace Avalonia.Diagnostics.Views
 {
     internal class MainWindow : Window, IStyleHost
     {
+        private readonly IDisposable _keySubscription;
         private TopLevel _root;
-        private IDisposable _keySubscription;
 
         public MainWindow()
         {
@@ -33,8 +33,22 @@ namespace Avalonia.Diagnostics.Views
             {
                 if (_root != value)
                 {
+                    if (_root != null)
+                    {
+                        _root.Closed -= RootClosed;
+                    }
+
                     _root = value;
-                    DataContext = new MainViewModel(value);
+
+                    if (_root != null)
+                    {
+                        _root.Closed += RootClosed;
+                        DataContext = new MainViewModel(value);
+                    }
+                    else
+                    {
+                        DataContext = null;
+                    }
                 }
             }
         }
@@ -45,6 +59,8 @@ namespace Avalonia.Diagnostics.Views
         {
             base.OnClosed(e);
             _keySubscription.Dispose();
+            _root.Closed -= RootClosed;
+            _root = null;
             ((MainViewModel)DataContext)?.Dispose();
         }
 
@@ -70,5 +86,7 @@ namespace Avalonia.Diagnostics.Views
                 }
             }
         }
+
+        private void RootClosed(object sender, EventArgs e) => Close();
     }
 }