From de26401c0266e22a1191bb5fbf2138cb48138666 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 18 Jul 2023 22:30:08 +0200 Subject: [PATCH] win32u: Use user message packing for WM_MOVING and WM_SIZING. --- dlls/user32/winproc.c | 5 ++--- dlls/win32u/message.c | 13 +++++++++---- dlls/win32u/tests/win32u.c | 8 ++++++-- dlls/wow64win/user.c | 2 ++ 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c index f10a8c0d49e..55d0e50b0a5 100644 --- a/dlls/user32/winproc.c +++ b/dlls/user32/winproc.c @@ -871,11 +871,8 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lparam, case LB_GETTEXT: case LB_GETSELITEMS: case WM_NEXTMENU: - break; case WM_SIZING: case WM_MOVING: - minsize = sizeof(RECT); - if (!get_buffer_space( buffer, sizeof(RECT), size )) return FALSE; break; case WM_MDICREATE: { @@ -1048,6 +1045,8 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params, ULONG size ) case LB_GETTEXT: case LB_GETSELITEMS: case WM_NEXTMENU: + case WM_SIZING: + case WM_MOVING: { LRESULT *result_ptr = (LRESULT *)buffer - 1; *result_ptr = result; diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index a09aaa9022c..47f4af53fc5 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -644,6 +644,11 @@ static BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lpa memcpy( *buffer, &mnm, sizeof(mnm) ); break; } + case WM_SIZING: + case WM_MOVING: + minsize = sizeof(RECT); + if (!get_buffer_space( buffer, sizeof(RECT), size )) return FALSE; + break; case WM_WINE_SETWINDOWPOS: { WINDOWPOS wp; @@ -1461,6 +1466,8 @@ size_t user_message_size( HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam, case CB_GETEDITSEL: size = 2 * sizeof(DWORD); break; + case WM_SIZING: + case WM_MOVING: case EM_GETRECT: case LB_GETITEMRECT: case CB_GETDROPPEDCONTROLRECT: @@ -1649,6 +1656,8 @@ static void copy_user_result( void *buffer, size_t size, LRESULT result, UINT me if (lparam) *(DWORD *)lparam = ptr[1]; break; } + case WM_SIZING: + case WM_MOVING: case EM_GETRECT: case EM_SETRECT: case EM_SETRECTNP: @@ -1688,10 +1697,6 @@ static void copy_reply( LRESULT result, HWND hwnd, UINT message, WPARAM wparam, case CB_GETCOMBOBOXINFO: copy_size = sizeof(COMBOBOXINFO); break; - case WM_SIZING: - case WM_MOVING: - copy_size = sizeof(RECT); - break; case WM_MDIGETACTIVE: if (lparam) copy_size = sizeof(BOOL); break; diff --git a/dlls/win32u/tests/win32u.c b/dlls/win32u/tests/win32u.c index 0f176ea88f5..d31e53405a3 100644 --- a/dlls/win32u/tests/win32u.c +++ b/dlls/win32u/tests/win32u.c @@ -1694,9 +1694,13 @@ static void test_wndproc_hook(void) }, { "WM_MOVING", WM_MOVING, - .lparam = &rect_in, .lparam_size = sizeof(RECT), + .lparam = &rect_in, .lparam_size = sizeof(RECT), .change_lparam = &rect_out, + .check_size = sizeof(RECT), + }, + { + "WM_SIZING", WM_SIZING, + .lparam = &rect_in, .lparam_size = sizeof(RECT), .change_lparam = &rect_out, .check_size = sizeof(RECT), - .todo = TRUE }, { "EM_GETRECT", EM_GETRECT, diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 669506b5147..684c365d0df 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -869,6 +869,8 @@ static size_t packed_result_32to64( UINT message, WPARAM wparam, const void *par case CB_GETLBTEXT: case LB_GETTEXT: case LB_GETSELITEMS: + case WM_SIZING: + case WM_MOVING: break; default: