Module: wine
Branch: master
Commit: 61e0190a52608580b3cb0116eeb3658da60d339f
URL:
https://gitlab.winehq.org/wine/wine/-/commit/61e0190a52608580b3cb0116eeb365…
Author: Jacek Caban <jacek(a)codeweavers.com>
Date: Tue Jul 18 12:47:45 2023 +0200
win32u: Use user message packing for WM_STYLECHANGING.
---
dlls/user32/winproc.c | 8 ++++----
dlls/win32u/message.c | 14 +++++++++++---
dlls/win32u/tests/win32u.c | 12 ++++++++++++
dlls/wow64win/user.c | 1 +
4 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/dlls/user32/winproc.c b/dlls/user32/winproc.c
index 8d6f89eaa6f..e759c5565b7 100644
--- a/dlls/user32/winproc.c
+++ b/dlls/user32/winproc.c
@@ -854,14 +854,12 @@ BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam, LPARAM
*lparam,
case WM_WINDOWPOSCHANGING:
case WM_WINDOWPOSCHANGED:
case WM_HELP:
+ case WM_STYLECHANGING:
+ case WM_STYLECHANGED:
break;
case WM_NOTIFY:
/* WM_NOTIFY cannot be sent across processes (MSDN) */
return FALSE;
- case WM_STYLECHANGING:
- case WM_STYLECHANGED:
- minsize = sizeof(STYLESTRUCT);
- break;
case WM_GETDLGCODE:
if (*lparam)
{
@@ -1103,6 +1101,8 @@ BOOL WINAPI User32CallWindowProc( struct win_proc_params *params,
ULONG size )
case WM_WINDOWPOSCHANGED:
case WM_COPYDATA:
case WM_HELP:
+ case WM_STYLECHANGING:
+ case WM_STYLECHANGED:
{
LRESULT *result_ptr = (LRESULT *)buffer - 1;
*result_ptr = result;
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c
index 7a3acf13ba5..f3068a9c618 100644
--- a/dlls/win32u/message.c
+++ b/dlls/win32u/message.c
@@ -536,6 +536,10 @@ static BOOL unpack_message( HWND hwnd, UINT message, WPARAM *wparam,
LPARAM *lpa
memcpy( &ps->hi, &hi, sizeof(hi) );
break;
}
+ case WM_STYLECHANGING:
+ case WM_STYLECHANGED:
+ minsize = sizeof(STYLESTRUCT);
+ break;
case WM_WINE_SETWINDOWPOS:
{
WINDOWPOS wp;
@@ -1348,6 +1352,10 @@ size_t user_message_size( UINT message, WPARAM wparam, LPARAM
lparam, BOOL other
case WM_HELP:
size = sizeof(HELPINFO);
break;
+ case WM_STYLECHANGING:
+ case WM_STYLECHANGED:
+ size = sizeof(STYLESTRUCT);
+ break;
}
return size;
@@ -1476,6 +1484,9 @@ static void copy_user_result( void *buffer, size_t size, LRESULT
result, UINT me
case WM_WINDOWPOSCHANGING:
copy_size = sizeof(WINDOWPOS);
break;
+ case WM_STYLECHANGING:
+ copy_size = sizeof(STYLESTRUCT);
+ break;
default:
return;
}
@@ -1503,9 +1514,6 @@ static void copy_reply( LRESULT result, HWND hwnd, UINT message,
WPARAM wparam,
case CB_GETCOMBOBOXINFO:
copy_size = sizeof(COMBOBOXINFO);
break;
- case WM_STYLECHANGING:
- copy_size = sizeof(STYLESTRUCT);
- break;
case WM_GETDLGCODE:
if (lparam) copy_size = sizeof(MSG);
break;
diff --git a/dlls/win32u/tests/win32u.c b/dlls/win32u/tests/win32u.c
index 501938cd039..fd526bcb36b 100644
--- a/dlls/win32u/tests/win32u.c
+++ b/dlls/win32u/tests/win32u.c
@@ -1656,6 +1656,8 @@ static void test_wndproc_hook(void)
static const COPYDATASTRUCT cds3_in = { .dwData = 2, .lpData = (void *)0xdeadbeef };
static const COPYDATASTRUCT cds4_in = { .cbData = 2 };
static const COPYDATASTRUCT cds5_in = { .lpData = (void *)0xdeadbeef };
+ static const STYLESTRUCT style_in = { .styleOld = 1, .styleNew = 2 };
+ static const STYLESTRUCT style_out = { .styleOld = 10, .styleNew = 20 };
static const struct lparam_hook_test lparam_hook_tests[] =
{
@@ -1795,6 +1797,16 @@ static void test_wndproc_hook(void)
.lparam_size = sizeof(cds5_in), .lparam = &cds5_in, .poison_lparam =
TRUE,
.check_size = sizeof(cds5_in),
},
+ {
+ "WM_STYLECHANGING", WM_STYLECHANGING,
+ .lparam_size = sizeof(style_in), .lparam = &style_in, .change_lparam =
&style_out,
+ .check_size = sizeof(style_in)
+ },
+ {
+ "WM_STYLECHANGED", WM_STYLECHANGED,
+ .lparam_size = sizeof(style_in), .lparam = &style_in, .poison_lparam =
TRUE,
+ .check_size = sizeof(style_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 5914a8d6d4e..d5d017a086f 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -827,6 +827,7 @@ static size_t packed_result_32to64( UINT message, WPARAM wparam, const
void *par
case WM_GETTEXT:
case WM_ASKCBFORMATNAME:
case WM_GETMINMAXINFO:
+ case WM_STYLECHANGING:
break;
default: