mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 07:06:52 +00:00
win32u: Use user message packing for WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED.
This commit is contained in:
parent
f231c7bed0
commit
9b400f3f3e
|
@ -845,22 +845,9 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lparam,
|
|||
case WM_MEASUREITEM:
|
||||
case WM_DELETEITEM:
|
||||
case WM_COMPAREITEM:
|
||||
break;
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
{
|
||||
WINDOWPOS wp;
|
||||
if (size < sizeof(ps->wp)) return FALSE;
|
||||
wp.hwnd = unpack_handle( ps->wp.hwnd );
|
||||
wp.hwndInsertAfter = unpack_handle( ps->wp.hwndInsertAfter );
|
||||
wp.x = ps->wp.x;
|
||||
wp.y = ps->wp.y;
|
||||
wp.cx = ps->wp.cx;
|
||||
wp.cy = ps->wp.cy;
|
||||
wp.flags = ps->wp.flags;
|
||||
memcpy( *buffer, &wp, sizeof(wp) );
|
||||
break;
|
||||
}
|
||||
case WM_COPYDATA:
|
||||
{
|
||||
COPYDATASTRUCT cds;
|
||||
|
@ -1137,6 +1124,8 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params, ULONG size )
|
|||
case WM_MEASUREITEM:
|
||||
case WM_DELETEITEM:
|
||||
case WM_COMPAREITEM:
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
{
|
||||
LRESULT *result_ptr = (LRESULT *)buffer - 1;
|
||||
*result_ptr = result;
|
||||
|
|
|
@ -489,6 +489,21 @@ static BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lpa
|
|||
memcpy( *buffer, &cis, sizeof(cis) );
|
||||
break;
|
||||
}
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
{
|
||||
WINDOWPOS wp;
|
||||
if (size < sizeof(ps->wp)) return FALSE;
|
||||
wp.hwnd = wine_server_ptr_handle( ps->wp.hwnd );
|
||||
wp.hwndInsertAfter = wine_server_ptr_handle( ps->wp.hwndInsertAfter );
|
||||
wp.x = ps->wp.x;
|
||||
wp.y = ps->wp.y;
|
||||
wp.cx = ps->wp.cx;
|
||||
wp.cy = ps->wp.cy;
|
||||
wp.flags = ps->wp.flags;
|
||||
memcpy( *buffer, &wp, sizeof(wp) );
|
||||
break;
|
||||
}
|
||||
case WM_WINE_SETWINDOWPOS:
|
||||
{
|
||||
WINDOWPOS wp;
|
||||
|
@ -1288,6 +1303,10 @@ size_t user_message_size( UINT message, WPARAM wparam, LPARAM lparam, BOOL other
|
|||
case WM_COMPAREITEM:
|
||||
size = sizeof(COMPAREITEMSTRUCT);
|
||||
break;
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
size = sizeof(WINDOWPOS);
|
||||
break;
|
||||
}
|
||||
|
||||
return size;
|
||||
|
@ -1405,6 +1424,9 @@ static void copy_user_result( void *buffer, size_t size, LRESULT result, UINT me
|
|||
case WM_MEASUREITEM:
|
||||
copy_size = sizeof(MEASUREITEMSTRUCT);
|
||||
break;
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
copy_size = sizeof(WINDOWPOS);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -1429,10 +1451,6 @@ static void copy_reply( LRESULT result, HWND hwnd, UINT message, WPARAM wparam,
|
|||
case LB_GETTEXT:
|
||||
copy_size = (result + 1) * sizeof(WCHAR);
|
||||
break;
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
copy_size = sizeof(WINDOWPOS);
|
||||
break;
|
||||
case CB_GETCOMBOBOXINFO:
|
||||
copy_size = sizeof(COMBOBOXINFO);
|
||||
break;
|
||||
|
|
|
@ -1626,6 +1626,8 @@ static void test_wndproc_hook(void)
|
|||
static const MEASUREITEMSTRUCT mis_out = { .itemID = 2, .CtlType = 3, .CtlID = 4, .itemData = 5 };
|
||||
static const DELETEITEMSTRUCT dis_in = { .itemID = 1 };
|
||||
static const COMPAREITEMSTRUCT cis_in = { .itemID1 = 1 };
|
||||
static const WINDOWPOS winpos_in = { .x = 1, .cy = 2 };
|
||||
static const WINDOWPOS winpos_out = { .x = 10, .cy = 22 };
|
||||
|
||||
static const struct lparam_hook_test lparam_hook_tests[] =
|
||||
{
|
||||
|
@ -1730,6 +1732,16 @@ static void test_wndproc_hook(void)
|
|||
.lparam_size = sizeof(cis_in), .lparam = &cis_in, .poison_lparam = TRUE,
|
||||
.check_size = sizeof(cis_in),
|
||||
},
|
||||
{
|
||||
"WM_WINDOWPOSCHANGING", WM_WINDOWPOSCHANGING,
|
||||
.lparam_size = sizeof(WINDOWPOS), .lparam = &winpos_in, .change_lparam = &winpos_out,
|
||||
.check_size = sizeof(WINDOWPOS)
|
||||
},
|
||||
{
|
||||
"WM_WINDOWPOSCHANGED", WM_WINDOWPOSCHANGED,
|
||||
.lparam_size = sizeof(WINDOWPOS), .lparam = &winpos_in, .poison_lparam = TRUE,
|
||||
.check_size = sizeof(WINDOWPOS),
|
||||
},
|
||||
/* messages that don't change lparam */
|
||||
{ "WM_USER", WM_USER },
|
||||
{ "WM_NOTIFY", WM_NOTIFY },
|
||||
|
|
|
@ -715,6 +715,11 @@ static size_t packed_message_64to32( UINT message, WPARAM wparam,
|
|||
memcpy( params32, &cis32, sizeof(cis32) );
|
||||
return sizeof(cis32);
|
||||
}
|
||||
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
winpos_64to32( params64, params32 );
|
||||
return sizeof(WINDOWPOS32);
|
||||
}
|
||||
|
||||
memmove( params32, params64, size );
|
||||
|
@ -776,6 +781,11 @@ static size_t packed_result_32to64( UINT message, WPARAM wparam, const void *par
|
|||
return sizeof(*mis64);
|
||||
}
|
||||
|
||||
case WM_WINDOWPOSCHANGING:
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
winpos_32to64( params64, params32 );
|
||||
return sizeof(WINDOWPOS);
|
||||
|
||||
case WM_GETTEXT:
|
||||
case WM_ASKCBFORMATNAME:
|
||||
case WM_GETMINMAXINFO:
|
||||
|
|
Loading…
Reference in a new issue