From 6de795d10cfbb7278f719164cba1eaa1acf89bba Mon Sep 17 00:00:00 2001 From: Konstantin Kondratyuk Date: Fri, 9 Apr 2010 14:29:24 +0400 Subject: [PATCH 3/3] user32: Fix window's sizing --- dlls/user32/winpos.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index 4c620c9..8d16db3 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -2566,13 +2566,18 @@ void WINPOS_SysCommandSizeMove( HWND hwnd, WPARAM wParam ) { RECT newRect = sizingRect; WPARAM wpSizingHit = 0; + POINT ptg; BOOL converted = FALSE; + ptg.x = pt.x; + ptg.y = pt.y; + MapWindowPoints(0, parent, &ptg, 1); + if (hittest == HTCAPTION) OffsetRect( &newRect, dx, dy ); - if (ON_LEFT_BORDER(hittest)) newRect.left += dx; - else if (ON_RIGHT_BORDER(hittest)) newRect.right += dx; - if (ON_TOP_BORDER(hittest)) newRect.top += dy; - else if (ON_BOTTOM_BORDER(hittest)) newRect.bottom += dy; + if (ON_LEFT_BORDER(hittest) && ((ptg.x >= sizingRect.left && dx > 0) || (ptg.x <= sizingRect.left && dx < 0))) newRect.left += dx; + else if (ON_RIGHT_BORDER(hittest) && ((ptg.x >= sizingRect.right && dx > 0) || (ptg.x <= sizingRect.right && dx < 0))) newRect.right += dx; + if (ON_TOP_BORDER(hittest) && ((ptg.y >= sizingRect.top && dy > 0) || (ptg.y <= sizingRect.top && dy < 0))) newRect.top += dy; + else if (ON_BOTTOM_BORDER(hittest) && ((ptg.y >= sizingRect.bottom && dy > 0) || (ptg.y <= sizingRect.bottom && dy < 0))) newRect.bottom += dy; if(!iconic && !DragFullWindows) draw_moving_frame( hdc, &sizingRect, thickframe ); capturePoint = pt; -- 1.6.5.8