From 11a67d5b1088433ed9b3e951f216f127e79553a4 Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Fri, 22 Nov 2019 23:51:50 +0100 Subject: [PATCH 1/2] Make sure window and its children get detached from visual and logical trees when closing. --- src/Avalonia.Controls/TopLevel.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 293809bf51..81f132660d 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -269,6 +269,18 @@ namespace Avalonia.Controls /// protected virtual void HandleClosed() { + { + var e = new LogicalTreeAttachmentEventArgs(this); + + ((ILogical)this).NotifyDetachedFromLogicalTree(e); + } + + { + var e = new VisualTreeAttachmentEventArgs(this, this); + + OnDetachedFromVisualTreeCore(e); + } + (this as IInputRoot).MouseDevice?.TopLevelClosed(this); PlatformImpl = null; OnClosed(EventArgs.Empty); From 7c7f6022cba12ad59c69fe2b614da27e2786c725 Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Sun, 24 Nov 2019 15:46:00 +0100 Subject: [PATCH 2/2] Cleanup event args locals. --- src/Avalonia.Controls/TopLevel.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 81f132660d..a0df186eb7 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -269,17 +269,11 @@ namespace Avalonia.Controls /// protected virtual void HandleClosed() { - { - var e = new LogicalTreeAttachmentEventArgs(this); - - ((ILogical)this).NotifyDetachedFromLogicalTree(e); - } + var logicalArgs = new LogicalTreeAttachmentEventArgs(this); + ((ILogical)this).NotifyDetachedFromLogicalTree(logicalArgs); - { - var e = new VisualTreeAttachmentEventArgs(this, this); - - OnDetachedFromVisualTreeCore(e); - } + var visualArgs = new VisualTreeAttachmentEventArgs(this, this); + OnDetachedFromVisualTreeCore(visualArgs); (this as IInputRoot).MouseDevice?.TopLevelClosed(this); PlatformImpl = null;