Hopefully the last in a series of fixes for size of maximized windows
Modified: trunk/reactos/subsys/win32k/ntuser/winpos.c

Modified: trunk/reactos/subsys/win32k/ntuser/winpos.c
--- trunk/reactos/subsys/win32k/ntuser/winpos.c	2005-09-16 20:13:26 UTC (rev 17889)
+++ trunk/reactos/subsys/win32k/ntuser/winpos.c	2005-09-16 21:15:58 UTC (rev 17890)
@@ -351,8 +351,8 @@
 
          case SW_MAXIMIZE:
             {
-               co_WinPosGetMinMaxInfo(Window, NULL, &InternalPos->MaxPos,
-                                      NULL, &Size);
+               co_WinPosGetMinMaxInfo(Window, &Size, &InternalPos->MaxPos,
+                                      NULL, NULL);
                DPRINT("Maximize: %d,%d %dx%d\n",
                       InternalPos->MaxPos.x, InternalPos->MaxPos.y, Size.x, Size.y);
                if (Window->Style & WS_MINIMIZE)
@@ -420,25 +420,23 @@
    IntGetDesktopWorkArea(Desktop, &WorkArea);
 
    /* Get default values. */
-   Info->ptMaxSize.x = WorkArea.right - WorkArea.left;
-   Info->ptMaxSize.y = WorkArea.bottom - WorkArea.top;
    Info->ptMinTrackSize.x = UserGetSystemMetrics(SM_CXMINTRACK);
    Info->ptMinTrackSize.y = UserGetSystemMetrics(SM_CYMINTRACK);
+
+   IntGetWindowBorderMeasures(Window, &XInc, &YInc);
+   Info->ptMaxSize.x = WorkArea.right - WorkArea.left + 2 * XInc;
+   Info->ptMaxSize.y = WorkArea.bottom - WorkArea.top + 2 * YInc;
    Info->ptMaxTrackSize.x = Info->ptMaxSize.x;
    Info->ptMaxTrackSize.y = Info->ptMaxSize.y;
 
-   IntGetWindowBorderMeasures(Window, &XInc, &YInc);
-   Info->ptMaxTrackSize.x += 2 * XInc;
-   Info->ptMaxTrackSize.y += 2 * YInc;
-
    if (Window->InternalPos != NULL)
    {
       Info->ptMaxPosition = Window->InternalPos->MaxPos;
    }
    else
    {
-      Info->ptMaxPosition.x -= WorkArea.left + XInc;
-      Info->ptMaxPosition.y -= WorkArea.top + YInc;
+      Info->ptMaxPosition.x = WorkArea.left - XInc;
+      Info->ptMaxPosition.y = WorkArea.top - YInc;
    }
 }