static HANDLE X11DRV_CLIPBOARD_ImportImageBmp(Display *d, Window w, Atom prop);
static HANDLE X11DRV_CLIPBOARD_ImportXAString(Display *d, Window w, Atom prop);
static HANDLE X11DRV_CLIPBOARD_ImportUTF8(Display *d, Window w, Atom prop);
-static HANDLE X11DRV_CLIPBOARD_ImportUcsString(Display *display, Window w, Atom prop);
static HANDLE X11DRV_CLIPBOARD_ImportCompoundText(Display *d, Window w, Atom prop);
static HANDLE X11DRV_CLIPBOARD_ExportClipboardData(Display *display, Window requestor, Atom aTarget,
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
{ CF_DSPENHMETAFILE, wszCF_DSPENHMETAFILE, 0, CF_FLAG_BUILTINFMT, X11DRV_CLIPBOARD_ImportClipboardData,
X11DRV_CLIPBOARD_ExportClipboardData, &ClipFormats[21], &ClipFormats[23]},
- { CF_TEXT, wszUTF8STRING, 0, CF_FLAG_BUILTINFMT, X11DRV_CLIPBOARD_ImportUcsString,
- X11DRV_CLIPBOARD_ExportString, &ClipFormats[22], NULL},
-
{ CF_DIB, wszIMAGEBMP, 0, CF_FLAG_BUILTINFMT, X11DRV_CLIPBOARD_ImportImageBmp,
X11DRV_CLIPBOARD_ExportImageBmp, &ClipFormats[22], NULL},
};
if (!X11DRV_CLIPBOARD_ReadProperty(display, w, prop, &lpdata, &cbytes))
return 0;
- for (i = 0; i < cbytes; i++)
+ for (i = 0; i <= cbytes; i++)
{
if (lpdata[i] == '\n')
inlcount++;
{
lpstr = GlobalLock(hText);
- for (i = 0, inlcount = 0; i < cbytes; i++)
+ for (i = 0, inlcount = 0; i <= cbytes; i++)
{
if (lpdata[i] == '\n')
lpstr[inlcount++] = '\r';
lpstr[inlcount++] = lpdata[i];
}
- lpstr[inlcount] = '\0';
+
GlobalUnlock(hText);
}
if (!X11DRV_CLIPBOARD_ReadProperty(display, w, prop, &lpdata, &cbytes))
return 0;
- for (i = 0; i < cbytes; i++)
+ for (i = 0; i <= cbytes; i++)
{
if (lpdata[i] == '\n')
inlcount++;
{
UINT count;
- for (i = 0, inlcount = 0; i < cbytes; i++)
+ for (i = 0, inlcount = 0; i <= cbytes; i++)
{
if (lpdata[i] == '\n')
lpstr[inlcount++] = '\r';
lpstr[inlcount++] = lpdata[i];
}
- lpstr[inlcount] = '\0';
count = MultiByteToWideChar(CP_UTF8, 0, lpstr, -1, NULL, 0);
hUnicodeText = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, count * sizeof(WCHAR));
return hUnicodeText;
}
-/**************************************************************************
- * X11DRV_CLIPBOARD_ImportUcsString
- *
- * Import UCS string, converting the string to CF_TEXT.
- */
-HANDLE X11DRV_CLIPBOARD_ImportUcsString(Display *display, Window w, Atom prop)
-{
- LPSTR lpstr = NULL;
- int len;
- HANDLE hText;
- LPWSTR lpstrW;
-
- hText = X11DRV_CLIPBOARD_ImportUTF8(display, w, prop);
- lpstrW = GlobalLock(hText);
-
- if (lpstrW)
- {
- len = WideCharToMultiByte(CP_ACP, 0, lpstrW, -1, NULL, 0, NULL, NULL);
- lpstr = HeapAlloc(GetProcessHeap(), 0, sizeof(char) * (len) );
- WideCharToMultiByte(CP_ACP, 0, lpstrW, -1, lpstr, len, NULL, NULL);
- if(strlenW(lpstrW) >= strlen(lpstr))
- strcpy((LPSTR)lpstrW, lpstr);
- else
- ERR("WCHAR buffer overfloat(%p)!\n", lpstrW);
- HeapFree(GetProcessHeap(), 0, lpstr);
- GlobalUnlock(hText);
- }
-
- return hText;
-}
-
/**************************************************************************
* X11DRV_CLIPBOARD_ImportCompoundText
*