From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/clipboard.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/dlls/win32u/clipboard.c b/dlls/win32u/clipboard.c index c1d8330b51f..e8d16291cd1 100644 --- a/dlls/win32u/clipboard.c +++ b/dlls/win32u/clipboard.c @@ -777,7 +777,9 @@ LRESULT drag_drop_call( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void .point.y = HIWORD(wparam), .effect = lparam, }; + UINT raw_dpi;
+ params.point = map_dpi_point( params.point, get_win_monitor_dpi( hwnd, &raw_dpi ), get_thread_dpi() ); if (KeUserModeCallback( NtUserDragDropDrag, ¶ms, sizeof(params), &ret_ptr, &ret_len ) || ret_len != sizeof(DWORD)) return DROPEFFECT_NONE; return *(DWORD *)ret_ptr; @@ -796,6 +798,7 @@ LRESULT drag_drop_call( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void const DROPFILES *drop = (DROPFILES *)lparam; UINT drop_size = wparam, size; NTSTATUS status; + UINT raw_dpi;
size = offsetof(struct drag_drop_post_params, drop) + drop_size; if (!(params = malloc( size ))) return STATUS_NO_MEMORY; @@ -803,6 +806,7 @@ LRESULT drag_drop_call( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void params->drop_size = drop_size; memcpy( ¶ms->drop, drop, drop_size );
+ params->drop.pt = map_dpi_point( params->drop.pt, get_win_monitor_dpi( hwnd, &raw_dpi ), get_thread_dpi() ); status = KeUserModeCallback( NtUserDragDropPost, params, size, &ret_ptr, &ret_len ); free( params ); return status;