user32: Keep toplevel minimized windows offscreen if they're already.
Some applications (e.g. Lego Worlds, Hitman 2) use (-32000,-32000) to determine whether a window is minimized. Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
9ef33b5e20
commit
dd417540bb
|
@ -11574,7 +11574,6 @@ todo_wine
|
||||||
ret = GetWindowPlacement(hwnd, &wp);
|
ret = GetWindowPlacement(hwnd, &wp);
|
||||||
ok(ret, "failed to get window placement, error %u\n", GetLastError());
|
ok(ret, "failed to get window placement, error %u\n", GetLastError());
|
||||||
ok(wp.showCmd == SW_SHOWMINIMIZED, "got show cmd %u\n", wp.showCmd);
|
ok(wp.showCmd == SW_SHOWMINIMIZED, "got show cmd %u\n", wp.showCmd);
|
||||||
todo_wine
|
|
||||||
ok(wp.ptMinPosition.x == -32000 && wp.ptMinPosition.y == -32000,
|
ok(wp.ptMinPosition.x == -32000 && wp.ptMinPosition.y == -32000,
|
||||||
"got minimized pos (%d,%d)\n", wp.ptMinPosition.x, wp.ptMinPosition.y);
|
"got minimized pos (%d,%d)\n", wp.ptMinPosition.x, wp.ptMinPosition.y);
|
||||||
todo_wine
|
todo_wine
|
||||||
|
@ -11583,7 +11582,6 @@ todo_wine
|
||||||
ok(EqualRect(&wp.rcNormalPosition, &orig), "got normal pos %s\n",
|
ok(EqualRect(&wp.rcNormalPosition, &orig), "got normal pos %s\n",
|
||||||
wine_dbgstr_rect(&wp.rcNormalPosition));
|
wine_dbgstr_rect(&wp.rcNormalPosition));
|
||||||
GetWindowRect(hwnd, &rect);
|
GetWindowRect(hwnd, &rect);
|
||||||
todo_wine
|
|
||||||
ok(rect.left == -32000 && rect.top == -32000, "got window rect %s\n", wine_dbgstr_rect(&rect));
|
ok(rect.left == -32000 && rect.top == -32000, "got window rect %s\n", wine_dbgstr_rect(&rect));
|
||||||
|
|
||||||
ShowWindow(hwnd, SW_SHOWNORMAL);
|
ShowWindow(hwnd, SW_SHOWNORMAL);
|
||||||
|
@ -11591,7 +11589,6 @@ todo_wine
|
||||||
ret = GetWindowPlacement(hwnd, &wp);
|
ret = GetWindowPlacement(hwnd, &wp);
|
||||||
ok(ret, "failed to get window placement, error %u\n", GetLastError());
|
ok(ret, "failed to get window placement, error %u\n", GetLastError());
|
||||||
ok(wp.showCmd == SW_NORMAL, "got show cmd %u\n", wp.showCmd);
|
ok(wp.showCmd == SW_NORMAL, "got show cmd %u\n", wp.showCmd);
|
||||||
todo_wine
|
|
||||||
ok(wp.ptMinPosition.x == -32000 && wp.ptMinPosition.y == -32000,
|
ok(wp.ptMinPosition.x == -32000 && wp.ptMinPosition.y == -32000,
|
||||||
"got minimized pos (%d,%d)\n", wp.ptMinPosition.x, wp.ptMinPosition.y);
|
"got minimized pos (%d,%d)\n", wp.ptMinPosition.x, wp.ptMinPosition.y);
|
||||||
todo_wine
|
todo_wine
|
||||||
|
|
|
@ -1688,6 +1688,14 @@ static BOOL SWP_DoWinPosChanging( WINDOWPOS *pWinpos, RECT *old_window_rect, REC
|
||||||
}
|
}
|
||||||
if (!(pWinpos->flags & SWP_NOMOVE))
|
if (!(pWinpos->flags & SWP_NOMOVE))
|
||||||
{
|
{
|
||||||
|
/* If the window is toplevel minimized off-screen, force keep it there */
|
||||||
|
if ((wndPtr->dwStyle & WS_MINIMIZE) &&
|
||||||
|
wndPtr->window_rect.left <= -32000 && wndPtr->window_rect.top <= -32000 &&
|
||||||
|
(!wndPtr->parent || wndPtr->parent == GetDesktopWindow()))
|
||||||
|
{
|
||||||
|
pWinpos->x = -32000;
|
||||||
|
pWinpos->y = -32000;
|
||||||
|
}
|
||||||
new_window_rect->left = pWinpos->x;
|
new_window_rect->left = pWinpos->x;
|
||||||
new_window_rect->top = pWinpos->y;
|
new_window_rect->top = pWinpos->y;
|
||||||
new_window_rect->right += pWinpos->x - old_window_rect->left;
|
new_window_rect->right += pWinpos->x - old_window_rect->left;
|
||||||
|
|
Loading…
Reference in New Issue