From def27ce17363486b11baf85a6f0e8bfb39cdba1a Mon Sep 17 00:00:00 2001 From: Alexandre Zollinger Chohfi Date: Fri, 15 Mar 2019 14:31:51 -0700 Subject: [PATCH 1/7] Changed version to 6.0.0-preview3. --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 17f6e107..2fbe2a10 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "version": "6.0.0-build.{height}", + "version": "6.0.0-preview3", "publicReleaseRefSpec": [ "^refs/heads/master$", // we release out of master "^refs/heads/dev$", // we release out of dev From 3ef66b6f1588c29730cc0b886315c2eab85d2e4c Mon Sep 17 00:00:00 2001 From: Oscar Calvo Date: Tue, 9 Apr 2019 13:41:08 -0700 Subject: [PATCH 2/7] Workaround a bug where WindowsXamlHostBase needs to be Disposed when the parent Window is closed. --- Directory.Build.props | 4 ++-- .../WindowsXamlHostBase.cs | 10 ++++++++ .../WindowsXamlHostBase.cs | 24 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index b16e73c0..b749610e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -18,7 +18,7 @@ $(MSBuildProjectName.Contains('Wpf')) $(MSBuildProjectName.Contains('Forms')) $(MSBuildProjectName.Contains('Sample')) - 18351 + 18362 18226 $(MSBuildThisFileDirectory)bin\nupkg @@ -45,7 +45,7 @@ This also needs to be installed on your local machine. Can do this with PowerShell: ./build/Install-WindowsSDKISO.ps1 18351 --> - 10.0.18351.0 + 10.0.18362.0 10.0.18226.0 diff --git a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs index 5ad9a43f..4c64bb9c 100644 --- a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs @@ -280,5 +280,15 @@ protected override void OnHandleCreated(EventArgs e) UpdateDpiScalingFactor(); } } + + /// + /// Override that disposes the current instance when the parent handle has been destroyed + /// + /// Ignored + protected override void OnHandleDestroyed(EventArgs e) + { + this.Dispose(); + base.OnHandleDestroyed(e); + } } } diff --git a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs index da926430..a17fcd4f 100644 --- a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs @@ -192,6 +192,8 @@ public object GetUwpInternalObject() /// public bool IsDisposed { get; private set; } + private System.Windows.Window _parentWindow; + /// /// Creates object, wrapped instance; creates and /// sets root UWP XAML element on . @@ -200,6 +202,12 @@ public object GetUwpInternalObject() /// Handle to XAML window protected override HandleRef BuildWindowCore(HandleRef hwndParent) { + this._parentWindow = System.Windows.Window.GetWindow(this); + if (_parentWindow != null) + { + _parentWindow.Closed += this.OnParentClosed; + } + ComponentDispatcher.ThreadFilterMessage += this.OnThreadFilterMessage; // 'EnableMouseInPointer' is called by the WindowsXamlManager during initialization. No need @@ -230,6 +238,16 @@ protected virtual void SetContent() } } + /// + /// Disposes the current instance in response to the parent window getting destroyed. + /// + /// Paramter sender is ignored + /// Parameter args is ignored + private void OnParentClosed(object sender, EventArgs e) + { + this.Dispose(); + } + /// /// WPF framework request to destroy control window. Cleans up the HwndIslandSite created by DesktopWindowXamlSource /// @@ -260,6 +278,12 @@ protected override void Dispose(bool disposing) { _xamlSource.TakeFocusRequested -= OnTakeFocusRequested; } + + if (_parentWindow != null) + { + _parentWindow.Closed -= this.OnParentClosed; + _parentWindow = null; + } } // Free any unmanaged objects here. From 4cc25073290d2cd4c34dd0ad717fcae194283fcc Mon Sep 17 00:00:00 2001 From: Alexandre Zollinger Chohfi Date: Fri, 15 Mar 2019 14:31:51 -0700 Subject: [PATCH 3/7] Changed version to 6.0.0-preview3. --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 17f6e107..2fbe2a10 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "version": "6.0.0-build.{height}", + "version": "6.0.0-preview3", "publicReleaseRefSpec": [ "^refs/heads/master$", // we release out of master "^refs/heads/dev$", // we release out of dev From a6cb3948e2a1f7baaa039850233970dd438f7d91 Mon Sep 17 00:00:00 2001 From: Oscar Calvo Date: Tue, 9 Apr 2019 13:41:08 -0700 Subject: [PATCH 4/7] Workaround a bug where WindowsXamlHostBase needs to be Disposed when the parent Window is closed. --- Directory.Build.props | 4 ++-- .../WindowsXamlHostBase.cs | 10 ++++++++ .../WindowsXamlHostBase.cs | 24 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index b16e73c0..b749610e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -18,7 +18,7 @@ $(MSBuildProjectName.Contains('Wpf')) $(MSBuildProjectName.Contains('Forms')) $(MSBuildProjectName.Contains('Sample')) - 18351 + 18362 18226 $(MSBuildThisFileDirectory)bin\nupkg @@ -45,7 +45,7 @@ This also needs to be installed on your local machine. Can do this with PowerShell: ./build/Install-WindowsSDKISO.ps1 18351 --> - 10.0.18351.0 + 10.0.18362.0 10.0.18226.0 diff --git a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs index 5ad9a43f..4c64bb9c 100644 --- a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs @@ -280,5 +280,15 @@ protected override void OnHandleCreated(EventArgs e) UpdateDpiScalingFactor(); } } + + /// + /// Override that disposes the current instance when the parent handle has been destroyed + /// + /// Ignored + protected override void OnHandleDestroyed(EventArgs e) + { + this.Dispose(); + base.OnHandleDestroyed(e); + } } } diff --git a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs index da926430..a17fcd4f 100644 --- a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs @@ -192,6 +192,8 @@ public object GetUwpInternalObject() /// public bool IsDisposed { get; private set; } + private System.Windows.Window _parentWindow; + /// /// Creates object, wrapped instance; creates and /// sets root UWP XAML element on . @@ -200,6 +202,12 @@ public object GetUwpInternalObject() /// Handle to XAML window protected override HandleRef BuildWindowCore(HandleRef hwndParent) { + this._parentWindow = System.Windows.Window.GetWindow(this); + if (_parentWindow != null) + { + _parentWindow.Closed += this.OnParentClosed; + } + ComponentDispatcher.ThreadFilterMessage += this.OnThreadFilterMessage; // 'EnableMouseInPointer' is called by the WindowsXamlManager during initialization. No need @@ -230,6 +238,16 @@ protected virtual void SetContent() } } + /// + /// Disposes the current instance in response to the parent window getting destroyed. + /// + /// Paramter sender is ignored + /// Parameter args is ignored + private void OnParentClosed(object sender, EventArgs e) + { + this.Dispose(); + } + /// /// WPF framework request to destroy control window. Cleans up the HwndIslandSite created by DesktopWindowXamlSource /// @@ -260,6 +278,12 @@ protected override void Dispose(bool disposing) { _xamlSource.TakeFocusRequested -= OnTakeFocusRequested; } + + if (_parentWindow != null) + { + _parentWindow.Closed -= this.OnParentClosed; + _parentWindow = null; + } } // Free any unmanaged objects here. From 7a07c7fae933530243cff74749112aea929e7af3 Mon Sep 17 00:00:00 2001 From: Oscar Calvo Date: Tue, 9 Apr 2019 14:13:19 -0700 Subject: [PATCH 5/7] Apply PR feedback --- Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs index a17fcd4f..77d9c4a5 100644 --- a/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Wpf.UI.XamlHost/WindowsXamlHostBase.cs @@ -245,7 +245,7 @@ protected virtual void SetContent() /// Parameter args is ignored private void OnParentClosed(object sender, EventArgs e) { - this.Dispose(); + this.Dispose(true); } /// From 7684d1e0237789c46093ec34ff3e78165aaafeca Mon Sep 17 00:00:00 2001 From: Oscar Calvo Date: Tue, 9 Apr 2019 14:22:59 -0700 Subject: [PATCH 6/7] Fix bad merge --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 2fbe2a10..17f6e107 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "version": "6.0.0-preview3", + "version": "6.0.0-build.{height}", "publicReleaseRefSpec": [ "^refs/heads/master$", // we release out of master "^refs/heads/dev$", // we release out of dev From 109221a83c585adfb91f1641226f5052d95cbcf2 Mon Sep 17 00:00:00 2001 From: Oscar Calvo Date: Tue, 9 Apr 2019 14:25:07 -0700 Subject: [PATCH 7/7] Apply PR feedback --- Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs index 4c64bb9c..3bff4d17 100644 --- a/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs +++ b/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs @@ -287,7 +287,7 @@ protected override void OnHandleCreated(EventArgs e) /// Ignored protected override void OnHandleDestroyed(EventArgs e) { - this.Dispose(); + this.Dispose(true); base.OnHandleDestroyed(e); } }