mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
user32: The client rectangle is in screen coordinates for the initial WM_NCCALCSIZE.
This commit is contained in:
parent
09cb415109
commit
5714c4deee
@ -3929,6 +3929,15 @@ static LRESULT CALLBACK winsizes_wnd_proc(HWND hwnd, UINT msg, WPARAM wp, LPARAM
|
||||
expected_rect.left, expected_rect.top, expected_rect.right, expected_rect.bottom );
|
||||
return DefWindowProc(hwnd, msg, wp, lp);
|
||||
}
|
||||
case WM_NCCALCSIZE:
|
||||
{
|
||||
RECT rect, *r = (RECT *)lp;
|
||||
GetWindowRect( hwnd, &rect );
|
||||
ok( !memcmp( &rect, r, sizeof(rect) ),
|
||||
"passed rect %d,%d-%d,%d doesn't match window rect %d,%d-%d,%d\n",
|
||||
r->left, r->top, r->right, r->bottom, rect.left, rect.top, rect.right, rect.bottom );
|
||||
return DefWindowProc(hwnd, msg, wp, lp);
|
||||
}
|
||||
default:
|
||||
return DefWindowProc(hwnd, msg, wp, lp);
|
||||
}
|
||||
|
@ -1139,11 +1139,18 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, LPCWSTR className, UINT flags
|
||||
if ((wndPtr = WIN_GetPtr(hwnd)))
|
||||
{
|
||||
/* yes, even if the CBT hook was called with HWND_TOP */
|
||||
POINT pt;
|
||||
HWND insert_after = (wndPtr->dwStyle & WS_CHILD) ? HWND_BOTTOM : HWND_TOP;
|
||||
RECT window_rect = wndPtr->rectWindow;
|
||||
RECT client_rect = window_rect;
|
||||
WIN_ReleasePtr( wndPtr );
|
||||
|
||||
/* the rectangle is in screen coords for WM_NCCALCSIZE when wparam is FALSE */
|
||||
pt.x = pt.y = 0;
|
||||
MapWindowPoints( parent, 0, &pt, 1 );
|
||||
OffsetRect( &client_rect, pt.x, pt.y );
|
||||
SendMessageW( hwnd, WM_NCCALCSIZE, FALSE, (LPARAM)&client_rect );
|
||||
OffsetRect( &client_rect, -pt.x, -pt.y );
|
||||
set_window_pos( hwnd, insert_after, SWP_NOACTIVATE, &window_rect, &client_rect, NULL );
|
||||
}
|
||||
else return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user