Alexandre Julliard : user32: Return a proper rectangle from WINPOS_MinMaximize.

Alexandre Julliard julliard at winehq.org
Thu Jul 31 07:17:47 CDT 2008


Module: wine
Branch: master
Commit: cd337174aa0ce501140e7b9791cb20fe15317810
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cd337174aa0ce501140e7b9791cb20fe15317810

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Jul 30 16:05:09 2008 +0200

user32: Return a proper rectangle from WINPOS_MinMaximize.

---

 dlls/user32/win.c    |    3 ++-
 dlls/user32/winpos.c |   14 +++++++-------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 2b7f620..7756ab0 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -1249,7 +1249,8 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, LPCWSTR className, UINT flags
         swFlag = WINPOS_MinMaximize( hwnd, swFlag, &newPos );
         swFlag |= SWP_FRAMECHANGED; /* Frame always gets changed */
         if (!(style & WS_VISIBLE) || (style & WS_CHILD) || GetActiveWindow()) swFlag |= SWP_NOACTIVATE;
-        SetWindowPos( hwnd, 0, newPos.left, newPos.top, newPos.right, newPos.bottom, swFlag );
+        SetWindowPos( hwnd, 0, newPos.left, newPos.top, newPos.right - newPos.left,
+                      newPos.bottom - newPos.top, swFlag );
     }
 
     /* Notify the parent window only */
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index a05b5f7..fed65e9 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -905,7 +905,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
 
         if (!(old_style & WS_MINIMIZE)) swpFlags |= SWP_STATECHANGED;
         SetRect( rect, wpl.ptMinPosition.x, wpl.ptMinPosition.y,
-                 GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON) );
+                 wpl.ptMinPosition.x + GetSystemMetrics(SM_CXICON),
+                 wpl.ptMinPosition.y + GetSystemMetrics(SM_CYICON) );
         swpFlags |= SWP_NOCOPYBITS;
         break;
 
@@ -919,7 +920,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
         if (old_style & WS_MINIMIZE) WINPOS_ShowIconTitle( hwnd, FALSE );
 
         if (!(old_style & WS_MAXIMIZE)) swpFlags |= SWP_STATECHANGED;
-        SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, size.x, size.y );
+        SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
+                 wpl.ptMaxPosition.x +  size.x, wpl.ptMaxPosition.y + size.y );
         break;
 
     case SW_SHOWNOACTIVATE:
@@ -941,7 +943,8 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
                 WINPOS_GetMinMaxInfo( hwnd, &size, &wpl.ptMaxPosition, NULL, NULL);
                 WIN_SetStyle( hwnd, WS_MAXIMIZE, 0 );
                 swpFlags |= SWP_STATECHANGED;
-                SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y, size.x, size.y );
+                SetRect( rect, wpl.ptMaxPosition.x, wpl.ptMaxPosition.y,
+                         wpl.ptMaxPosition.x + size.x, wpl.ptMaxPosition.y + size.y );
                 break;
             }
         }
@@ -952,9 +955,6 @@ UINT WINPOS_MinMaximize( HWND hwnd, UINT cmd, LPRECT rect )
         /* Restore to normal position */
 
         *rect = wpl.rcNormalPosition;
-        rect->right -= rect->left;
-        rect->bottom -= rect->top;
-
         break;
     }
 
@@ -1055,7 +1055,7 @@ static BOOL show_window( HWND hwnd, INT cmd )
     }
     else
         SetWindowPos( hwnd, HWND_TOP, newPos.left, newPos.top,
-                      newPos.right, newPos.bottom, LOWORD(swp) );
+                      newPos.right - newPos.left, newPos.bottom - newPos.top, swp );
 
     if (cmd == SW_HIDE)
     {




More information about the wine-cvs mailing list