[WIN32SS:NTUSER] Completely update the metrics in co_IntInitializeDesktopGraphics().
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 5 Jan 2019 15:36:30 +0000 (16:36 +0100)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 5 Jan 2019 15:42:16 +0000 (16:42 +0100)
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

index 4556e74..033c7a1 100644 (file)
@@ -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;