Module: wine Branch: master Commit: 10789142fcf639b8b6b290f317e5a12810ad1d4c URL: http://source.winehq.org/git/wine.git/?a=commit;h=10789142fcf639b8b6b290f317...
Author: Kusanagi Kouichi slash@ac.auone-net.jp Date: Sat Feb 20 17:57:07 2010 +0900
winex11.drv: Check XDND version.
---
dlls/winex11.drv/window.c | 2 +- dlls/winex11.drv/x11drv.h | 2 ++ dlls/winex11.drv/xdnd.c | 12 ++++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index e46a06b..1f40eba 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -917,7 +917,7 @@ static void set_initial_wm_hints( Display *display, struct x11drv_win_data *data { long i; Atom protocols[3]; - Atom dndVersion = 4; + Atom dndVersion = WINE_XDND_VERSION; XClassHint *class_hints; char *process_name = get_process_name();
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 6db410a..001836f 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -64,6 +64,8 @@ typedef int Status; #define MAX_PIXELFORMATS 8 #define MAX_DASHLEN 16
+#define WINE_XDND_VERSION 4 + struct tagCURSORICONINFO;
extern void CDECL wine_tsx11_lock(void); diff --git a/dlls/winex11.drv/xdnd.c b/dlls/winex11.drv/xdnd.c index 38687ec..fe36e0c 100644 --- a/dlls/winex11.drv/xdnd.c +++ b/dlls/winex11.drv/xdnd.c @@ -87,14 +87,22 @@ static CRITICAL_SECTION xdnd_cs = { &critsect_debug, -1, 0, 0, 0, 0 }; */ void X11DRV_XDND_EnterEvent( HWND hWnd, XClientMessageEvent *event ) { + int version; Atom *xdndtypes; unsigned long count = 0;
- TRACE("ver(%ld) check-XdndTypeList(%ld) data=%ld,%ld,%ld,%ld,%ld\n", - (event->data.l[1] & 0xFF000000) >> 24, (event->data.l[1] & 1), + version = (event->data.l[1] & 0xFF000000) >> 24; + TRACE("ver(%d) check-XdndTypeList(%ld) data=%ld,%ld,%ld,%ld,%ld\n", + version, (event->data.l[1] & 1), event->data.l[0], event->data.l[1], event->data.l[2], event->data.l[3], event->data.l[4]);
+ if (version > WINE_XDND_VERSION) + { + TRACE("Ignores unsupported version\n"); + return; + } + /* If the source supports more than 3 data types we retrieve * the entire list. */ if (event->data.l[1] & 1)