Popup windows will be hidden when we minimize a main frame or shown
when we maximize or restore a minimized main frame.
diff --git a/windows/nonclient.c b/windows/nonclient.c
index 0563c59..3788e47 100644
--- a/windows/nonclient.c
+++ b/windows/nonclient.c
@@ -2729,14 +2729,20 @@
break;
case SC_MINIMIZE:
+ if (hwnd == GetForegroundWindow())
+ ShowOwnedPopups(hwnd,FALSE);
ShowWindow( hwnd, SW_MINIMIZE );
break;
case SC_MAXIMIZE:
+ if (IsIconic(hwnd) && hwnd == GetForegroundWindow())
+ ShowOwnedPopups(hwnd,TRUE);
ShowWindow( hwnd, SW_MAXIMIZE );
break;
case SC_RESTORE:
+ if (IsIconic(hwnd) && hwnd == GetForegroundWindow())
+ ShowOwnedPopups(hwnd,TRUE);
ShowWindow( hwnd, SW_RESTORE );
break;
diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c
index 2be0c05..867831d 100644
--- a/windows/x11drv/event.c
+++ b/windows/x11drv/event.c
@@ -1737,7 +1737,10 @@
WND *wndFocus = WIN_FindWndPtr(hwndFocus);
WND *pWnd = WIN_FindWndPtr(hWnd);
if (pWnd->flags & WIN_MANAGED)
+ {
pWnd->dwStyle &= ~WS_MINIMIZE;
+ ShowOwnedPopups(hWnd,TRUE);
+ }
WIN_ReleaseWndPtr(pWnd);
if (hwndFocus && IsChild( hWnd, hwndFocus ))
@@ -1759,7 +1762,10 @@
{
EndMenu();
if( pWnd->dwStyle & WS_VISIBLE )
+ {
pWnd->dwStyle |= WS_MINIMIZE;
+ ShowOwnedPopups(hWnd,FALSE);
+ }
}
WIN_ReleaseWndPtr(pWnd);
}