From 81fc978d642884141f0f48a2d860d9f15769bea0 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 8 Apr 2021 12:36:32 +0200 Subject: [PATCH] Use hidden window when clearing parent... ...if `ShowInTaskbar == false`. --- src/Windows/Avalonia.Win32/WindowImpl.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 0fbd58eeb9..d1dfb4a675 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -581,8 +581,15 @@ namespace Avalonia.Win32 public void SetParent(IWindowImpl parent) { - _parent = (WindowImpl)parent; - SetWindowLongPtr(_hwnd, (int)WindowLongParam.GWL_HWNDPARENT, _parent?._hwnd ?? IntPtr.Zero); + var parentHwnd = ((WindowImpl)parent)?._hwnd ?? IntPtr.Zero; + + if (parentHwnd == IntPtr.Zero && !_windowProperties.ShowInTaskbar) + { + parentHwnd = OffscreenParentWindow.Handle; + _hiddenWindowIsParent = true; + } + + SetWindowLongPtr(_hwnd, (int)WindowLongParam.GWL_HWNDPARENT, parentHwnd); } public void SetEnabled(bool enable) => EnableWindow(_hwnd, enable); @@ -1108,6 +1115,7 @@ namespace Avalonia.Win32 if (shown) Hide(); + _hiddenWindowIsParent = false; SetParent(null); if (shown)