winex11.drv: Support XDnD version 5.

This commit is contained in:
Damjan Jovanovic 2015-03-02 06:32:08 +02:00 committed by Alexandre Julliard
parent 4c8b3f63be
commit 1a20050826
2 changed files with 11 additions and 2 deletions

View File

@ -61,7 +61,7 @@ typedef int Status;
#define MAX_DASHLEN 16
#define WINE_XDND_VERSION 4
#define WINE_XDND_VERSION 5
/* X physical pen */
typedef struct

View File

@ -373,6 +373,8 @@ void X11DRV_XDND_DropEvent( HWND hWnd, XClientMessageEvent *event )
{
XClientMessageEvent e;
IDropTarget *dropTarget;
DWORD effect = XDNDDropEffect;
int accept = 0; /* Assume we're not accepting */
TRACE("\n");
@ -386,7 +388,6 @@ void X11DRV_XDND_DropEvent( HWND hWnd, XClientMessageEvent *event )
{
HRESULT hr;
POINTL pointl;
DWORD effect = XDNDDropEffect;
pointl.x = XDNDxy.x;
pointl.y = XDNDxy.y;
@ -395,7 +396,10 @@ void X11DRV_XDND_DropEvent( HWND hWnd, XClientMessageEvent *event )
if (SUCCEEDED(hr))
{
if (effect != DROPEFFECT_NONE)
{
TRACE("drop succeeded\n");
accept = 1;
}
else
TRACE("the application refused the drop\n");
}
@ -414,6 +418,11 @@ void X11DRV_XDND_DropEvent( HWND hWnd, XClientMessageEvent *event )
e.message_type = x11drv_atom(XdndFinished);
e.format = 32;
e.data.l[0] = event->window;
e.data.l[1] = accept;
if (accept)
e.data.l[2] = X11DRV_XDND_DROPEFFECTToXdndAction(effect);
else
e.data.l[2] = None;
XSendEvent(event->display, event->data.l[0], False, NoEventMask, (XEvent*)&e);
}