From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/event.c | 4 ++-- dlls/winex11.drv/unixlib.h | 6 ++++++ dlls/winex11.drv/xdnd.c | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index e7cc3855c2d..7e40106122b 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -1779,13 +1779,13 @@ static void handle_xdnd_position_event( HWND hwnd, XClientMessageEvent *event )
static void handle_xdnd_drop_event( HWND hwnd, XClientMessageEvent *event ) { + struct dnd_drop_event_params params = {.hwnd = HandleToULong(hwnd)}; XClientMessageEvent e; void *ret_ptr; ULONG ret_len; - ULONG arg = HandleToUlong( hwnd ); UINT effect;
- if (KeUserModeCallback( client_func_dnd_drop_event, &arg, sizeof(arg), + if (KeUserModeCallback( client_func_dnd_drop_event, ¶ms, sizeof(params), &ret_ptr, &ret_len ) || ret_len != sizeof(effect)) return; effect = *(UINT *)ret_ptr; diff --git a/dlls/winex11.drv/unixlib.h b/dlls/winex11.drv/unixlib.h index 0be0d5dae86..79c959912b8 100644 --- a/dlls/winex11.drv/unixlib.h +++ b/dlls/winex11.drv/unixlib.h @@ -80,3 +80,9 @@ struct dnd_position_event_params POINT point; DWORD effect; }; + +/* x11drv_dnd_drop_event params */ +struct dnd_drop_event_params +{ + ULONG hwnd; +}; diff --git a/dlls/winex11.drv/xdnd.c b/dlls/winex11.drv/xdnd.c index 1d3171538cb..bd2e6158c8b 100644 --- a/dlls/winex11.drv/xdnd.c +++ b/dlls/winex11.drv/xdnd.c @@ -254,7 +254,8 @@ NTSTATUS WINAPI x11drv_dnd_position_event( void *arg, ULONG size )
NTSTATUS WINAPI x11drv_dnd_drop_event( void *args, ULONG size ) { - HWND hwnd = UlongToHandle( *(ULONG *)args ); + struct dnd_drop_event_params *params = args; + HWND hwnd = UlongToHandle( params->hwnd ); IDropTarget *dropTarget; DWORD effect = XDNDDropEffect; int accept = 0; /* Assume we're not accepting */