From ca24df9c85ac0883cce43641c9083aa0ef03d9f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 5 Jan 2019 16:36:30 +0100 Subject: [PATCH] [WIN32SS:NTUSER] Completely update the metrics in co_IntInitializeDesktopGraphics(). This change is similar to what is done in UserChangeDisplaySettings() after changing screen video mode. This allows e.g. having windows to be correctly maximized during 2nd-stage GUI setup. To compare and reproduce during 2nd-stage GUI setup, open cmd.exe (Shift-F10) and from there a GUI app, e.g. regedit.exe, and maximize it. Observe the limits used by the window. --- win32ss/user/ntuser/winsta.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/win32ss/user/ntuser/winsta.c b/win32ss/user/ntuser/winsta.c index 4556e7412ee..033c7a1e779 100644 --- a/win32ss/user/ntuser/winsta.c +++ b/win32ss/user/ntuser/winsta.c @@ -271,7 +271,7 @@ co_IntInitializeDesktopGraphics(VOID) } GreSetDCOwner(ScreenDeviceContext, GDI_OBJ_HMGR_PUBLIC); - if (! IntCreatePrimarySurface()) + if (!IntCreatePrimarySurface()) { return FALSE; } @@ -281,6 +281,12 @@ co_IntInitializeDesktopGraphics(VOID) NtGdiSelectFont(hSystemBM, NtGdiGetStockObject(SYSTEM_FONT)); GreSetDCOwner(hSystemBM, GDI_OBJ_HMGR_PUBLIC); + /* Update the system metrics */ + InitMetrics(); + + /* Set new size of the monitor */ + UserUpdateMonitorSize((HDEV)gppdevPrimary); + /* Update the SERVERINFO */ gpsi->aiSysMet[SM_CXSCREEN] = gppdevPrimary->gdiinfo.ulHorzRes; gpsi->aiSysMet[SM_CYSCREEN] = gppdevPrimary->gdiinfo.ulVertRes; @@ -293,7 +299,9 @@ co_IntInitializeDesktopGraphics(VOID) gpsi->PUSIFlags |= PUSIF_PALETTEDISPLAY; } else + { gpsi->PUSIFlags &= ~PUSIF_PALETTEDISPLAY; + } // Font is realized and this dc was previously set to internal DC_ATTR. gpsi->cxSysFontChar = IntGetCharDimensions(hSystemBM, &tmw, (DWORD*)&gpsi->cySysFontChar); gpsi->tmSysFont = tmw;