Module: wine Branch: master Commit: f104be399bb26009f616b798dad883f79b55f31d URL: https://gitlab.winehq.org/wine/wine/-/commit/f104be399bb26009f616b798dad883f...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Jul 18 00:06:13 2023 +0200
win32u: Use user message packing for WM_GETMINMAXINFO.
---
dlls/user32/winproc.c | 3 +-- dlls/win32u/message.c | 12 +++++++++--- dlls/win32u/tests/win32u.c | 7 +++++++ dlls/wow64win/user.c | 1 + 4 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c index c457fef7d11..27b63dbf90f 100644 --- a/dlls/user32/winproc.c +++ b/dlls/user32/winproc.c @@ -840,9 +840,7 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lparam, case LB_DIR: case LB_ADDFILE: case EM_REPLACESEL: - break; case WM_GETMINMAXINFO: - minsize = sizeof(MINMAXINFO); break; case WM_DRAWITEM: { @@ -1187,6 +1185,7 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params, ULONG size ) case LB_DIR: case LB_ADDFILE: case EM_REPLACESEL: + case WM_GETMINMAXINFO: { LRESULT *result_ptr = (LRESULT *)buffer - 1; *result_ptr = result; diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index 6e1b31bc93d..01bf238e87a 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -430,6 +430,9 @@ static BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM *lpa case LB_ADDFILE: case EM_REPLACESEL: break; + case WM_GETMINMAXINFO: + minsize = sizeof(MINMAXINFO); + break; case WM_WINE_SETWINDOWPOS: { WINDOWPOS wp; @@ -1214,6 +1217,9 @@ size_t user_message_size( UINT message, WPARAM wparam, LPARAM lparam, BOOL other case EM_REPLACESEL: if (other_process && lparam) size = string_size( lparam_ptr, ansi ); break; + case WM_GETMINMAXINFO: + size = sizeof(MINMAXINFO); + break; }
return size; @@ -1325,6 +1331,9 @@ static void copy_user_result( void *buffer, size_t size, LRESULT result, UINT me case WM_ASKCBFORMATNAME: copy_size = string_size( buffer, ansi ); break; + case WM_GETMINMAXINFO: + copy_size = sizeof(MINMAXINFO); + break; default: return; } @@ -1349,9 +1358,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_GETMINMAXINFO: - copy_size = sizeof(MINMAXINFO); - break; case WM_MEASUREITEM: copy_size = sizeof(MEASUREITEMSTRUCT); break; diff --git a/dlls/win32u/tests/win32u.c b/dlls/win32u/tests/win32u.c index 5d9186d901d..57eb9691993 100644 --- a/dlls/win32u/tests/win32u.c +++ b/dlls/win32u/tests/win32u.c @@ -1608,6 +1608,8 @@ static void test_wndproc_hook(void) static const WCHAR strbuf4W[8] = L"abc\0\xcccc\xcccc\xcccc\xcccc"; static const RECT rect_in = { 1, 2, 100, 200 }; static const RECT rect_out = { 3, 4, 110, 220 }; + static const MINMAXINFO minmax_in = { .ptMinTrackSize.x = 1 }; + static const MINMAXINFO minmax_out = { .ptMinTrackSize.x = 2 };
static const struct lparam_hook_test lparam_hook_tests[] = { @@ -1692,6 +1694,11 @@ static void test_wndproc_hook(void) .lparam_size = sizeof(BOOL), .change_lparam = &false_lparam, .todo = TRUE }, + { + "WM_GETMINMAXINFO", WM_GETMINMAXINFO, + .lparam_size = sizeof(minmax_in), .lparam = &minmax_in, .change_lparam = &minmax_out, + .check_size = sizeof(minmax_in) + }, /* messages that don't change lparam */ { "WM_USER", WM_USER }, { "WM_NOTIFY", WM_NOTIFY }, diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c index 79298ae2eed..982104867f7 100644 --- a/dlls/wow64win/user.c +++ b/dlls/wow64win/user.c @@ -697,6 +697,7 @@ static size_t packed_result_32to64( UINT message, WPARAM wparam, const void *par
case WM_GETTEXT: case WM_ASKCBFORMATNAME: + case WM_GETMINMAXINFO: break;
default: