Only child windows receive WM_SHOWWINDOW in DestroyWindow() under
Windows.
diff --git a/windows/win.c b/windows/win.c
index 15e85c7..e47ea3f 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -1429,6 +1429,7 @@
if (GetGUIThreadInfo( GetCurrentThreadId(), &info ))
{
if (hwnd == info.hwndCaret) DestroyCaret();
+ if (hwnd == info.hwndActive) WINPOS_ActivateOtherWindow( hwnd );
}
if (USER_Driver.pResetSelectionOwner)
USER_Driver.pResetSelectionOwner( hwnd, TRUE );
@@ -1505,10 +1506,13 @@
/* Hide the window */
- if (!ShowWindow( hwnd, SW_HIDE ))
- {
- if (hwnd == GetActiveWindow()) WINPOS_ActivateOtherWindow( hwnd );
- }
+ /* Only child windows receive WM_SHOWWINDOW in DestroyWindow() */
+ if (is_child)
+ ShowWindow( hwnd, SW_HIDE );
+ else
+ SetWindowPos( hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE |
+ SWP_NOZORDER | SWP_NOACTIVATE | SWP_HIDEWINDOW );
+
if (!IsWindow(hwnd)) return TRUE;
/* Recursively destroy owned windows */