Module: wine Branch: master Commit: 538b39c4cf4b20f636b0424536da6354c8991cab URL: http://source.winehq.org/git/wine.git/?a=commit;h=538b39c4cf4b20f636b0424536...
Author: Damjan Jovanovic damjan.jov@gmail.com Date: Wed May 5 20:50:04 2010 +0200
winex11.drv: Use unicode filenames for WM_DROPFILES.
---
dlls/winex11.drv/xdnd.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/dlls/winex11.drv/xdnd.c b/dlls/winex11.drv/xdnd.c index fe36e0c..9d209fc 100644 --- a/dlls/winex11.drv/xdnd.c +++ b/dlls/winex11.drv/xdnd.c @@ -367,7 +367,7 @@ static int X11DRV_XDND_DeconstructTextURIList(int property, void* data, int len) char *uri; WCHAR *path;
- char *out = NULL; + WCHAR *out = NULL; int size = 0; int capacity = 4096;
@@ -375,7 +375,7 @@ static int X11DRV_XDND_DeconstructTextURIList(int property, void* data, int len) int start = 0; int end = 0;
- out = HeapAlloc(GetProcessHeap(), 0, capacity); + out = HeapAlloc(GetProcessHeap(), 0, capacity * sizeof(WCHAR)); if (out == NULL) return 0;
@@ -403,11 +403,11 @@ static int X11DRV_XDND_DeconstructTextURIList(int property, void* data, int len) if (pathSize > capacity-size) { capacity = 2*capacity + pathSize; - out = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, out, capacity + 1); + out = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, out, (capacity + 1)*sizeof(WCHAR)); if (out == NULL) goto done; } - WideCharToMultiByte(CP_ACP, 0, path, -1, &out[size], pathSize, 0, 0); + memcpy(&out[size], path, pathSize * sizeof(WCHAR)); size += pathSize; done: HeapFree(GetProcessHeap(), 0, path); @@ -421,17 +421,17 @@ static int X11DRV_XDND_DeconstructTextURIList(int property, void* data, int len) if (out && end >= len) { DROPFILES *dropFiles; - dropFiles = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DROPFILES) + size + 1); + dropFiles = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DROPFILES) + (size + 1)*sizeof(WCHAR)); if (dropFiles) { dropFiles->pFiles = sizeof(DROPFILES); dropFiles->pt.x = XDNDxy.x; dropFiles->pt.y = XDNDxy.y; dropFiles->fNC = 0; - dropFiles->fWide = FALSE; + dropFiles->fWide = TRUE; out[size] = '\0'; - memcpy(((char*)dropFiles) + dropFiles->pFiles, out, size + 1); - X11DRV_XDND_InsertXDNDData(property, CF_HDROP, dropFiles, sizeof(DROPFILES) + size + 1); + memcpy(((char*)dropFiles) + dropFiles->pFiles, out, (size + 1)*sizeof(WCHAR)); + X11DRV_XDND_InsertXDNDData(property, CF_HDROP, dropFiles, sizeof(DROPFILES) + (size + 1)*sizeof(WCHAR)); count = 1; } } @@ -508,9 +508,9 @@ static void X11DRV_XDND_SendDropFiles(HWND hwnd) lpDrop->pt.y = XDNDxy.y;
TRACE("Sending WM_DROPFILES: hWnd(0x%p) %p(%s)\n", hwnd, - ((char*)lpDrop) + lpDrop->pFiles, ((char*)lpDrop) + lpDrop->pFiles); + ((char*)lpDrop) + lpDrop->pFiles, debugstr_w((WCHAR*)(((char*)lpDrop) + lpDrop->pFiles)));
- PostMessageA(hwnd, WM_DROPFILES, (WPARAM)lpDrop, 0L); + PostMessageW(hwnd, WM_DROPFILES, (WPARAM)lpDrop, 0L); } }