Win32: Fix scale fixup losing initial position

The window content scale correction at creation overwrote the inital,
more pleasant placement of the window by CW_USEDEFAULT, if the window
was created with GLFW_MAXIMIZED set.  This is because the translation
to screen coordinates was done using the current position, not the
position from the restored window rect.

(cherry picked from commit 367d06deaf)
This commit is contained in:
Camilla Löwy
2022-03-07 19:19:31 +01:00
parent d9512b694b
commit 85a3bf40fb
2 changed files with 6 additions and 3 deletions
+4 -3
View File
@@ -1309,9 +1309,6 @@ static int createNativeWindow(_GLFWwindow* window,
}
}
ClientToScreen(window->win32.handle, (POINT*) &rect.left);
ClientToScreen(window->win32.handle, (POINT*) &rect.right);
if (_glfwIsWindows10AnniversaryUpdateOrGreaterWin32())
{
AdjustWindowRectExForDpi(&rect, style, FALSE, exStyle,
@@ -1321,6 +1318,10 @@ static int createNativeWindow(_GLFWwindow* window,
AdjustWindowRectEx(&rect, style, FALSE, exStyle);
GetWindowPlacement(window->win32.handle, &wp);
OffsetRect(&rect,
wp.rcNormalPosition.left - rect.left,
wp.rcNormalPosition.top - rect.top);
wp.rcNormalPosition = rect;
wp.showCmd = SW_HIDE;
SetWindowPlacement(window->win32.handle, &wp);