winex11: Add separate export functions for the various string types.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
8b7520ce6d
commit
63201471ab
|
@ -140,6 +140,10 @@ static HANDLE export_data(Display *display, Window requestor, Atom aTarget,
|
||||||
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
||||||
static HANDLE export_string(Display *display, Window requestor, Atom aTarget,
|
static HANDLE export_string(Display *display, Window requestor, Atom aTarget,
|
||||||
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
||||||
|
static HANDLE export_utf8_string(Display *display, Window requestor, Atom aTarget,
|
||||||
|
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
||||||
|
static HANDLE export_compound_text(Display *display, Window requestor, Atom aTarget,
|
||||||
|
Atom rprop, LPWINE_CLIPDATA lpData, LPDWORD lpBytes);
|
||||||
static HANDLE export_pixmap(Display *display, Window requestor, Atom aTarget,
|
static HANDLE export_pixmap(Display *display, Window requestor, Atom aTarget,
|
||||||
Atom rprop, LPWINE_CLIPDATA lpdata, LPDWORD lpBytes);
|
Atom rprop, LPWINE_CLIPDATA lpdata, LPDWORD lpBytes);
|
||||||
static HANDLE export_image_bmp(Display *display, Window requestor, Atom aTarget,
|
static HANDLE export_image_bmp(Display *display, Window requestor, Atom aTarget,
|
||||||
|
@ -192,8 +196,8 @@ static const struct
|
||||||
{ 0, CF_PENDATA, XATOM_WCF_PENDATA, import_data, export_data },
|
{ 0, CF_PENDATA, XATOM_WCF_PENDATA, import_data, export_data },
|
||||||
{ 0, CF_RIFF, XATOM_WCF_RIFF, import_data, export_data },
|
{ 0, CF_RIFF, XATOM_WCF_RIFF, import_data, export_data },
|
||||||
{ 0, CF_WAVE, XATOM_WCF_WAVE, import_data, export_data },
|
{ 0, CF_WAVE, XATOM_WCF_WAVE, import_data, export_data },
|
||||||
{ 0, CF_UNICODETEXT, XATOM_UTF8_STRING, import_utf8_string, export_string },
|
{ 0, CF_UNICODETEXT, XATOM_UTF8_STRING, import_utf8_string, export_utf8_string },
|
||||||
{ 0, CF_UNICODETEXT, XATOM_COMPOUND_TEXT, import_compound_text, export_string },
|
{ 0, CF_UNICODETEXT, XATOM_COMPOUND_TEXT, import_compound_text, export_compound_text },
|
||||||
{ 0, CF_ENHMETAFILE, XATOM_WCF_ENHMETAFILE, import_enhmetafile, export_enhmetafile },
|
{ 0, CF_ENHMETAFILE, XATOM_WCF_ENHMETAFILE, import_enhmetafile, export_enhmetafile },
|
||||||
{ 0, CF_HDROP, XATOM_text_uri_list, import_text_uri_list, export_hdrop },
|
{ 0, CF_HDROP, XATOM_text_uri_list, import_text_uri_list, export_hdrop },
|
||||||
{ 0, CF_LOCALE, XATOM_WCF_LOCALE, import_data, export_data },
|
{ 0, CF_LOCALE, XATOM_WCF_LOCALE, import_data, export_data },
|
||||||
|
@ -1365,17 +1369,19 @@ static HANDLE export_data(Display *display, Window requestor, Atom aTarget,
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* X11DRV_CLIPBOARD_ExportXAString
|
* export_string
|
||||||
*
|
*
|
||||||
* Export CF_TEXT converting the string to XA_STRING.
|
* Export CF_TEXT converting the string to XA_STRING.
|
||||||
* Helper function for export_string.
|
|
||||||
*/
|
*/
|
||||||
static HANDLE X11DRV_CLIPBOARD_ExportXAString(LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
static HANDLE export_string(Display *display, Window requestor, Atom aTarget, Atom rprop,
|
||||||
|
LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
||||||
{
|
{
|
||||||
UINT i, j;
|
UINT i, j;
|
||||||
UINT size;
|
UINT size;
|
||||||
LPSTR text, lpstr = NULL;
|
LPSTR text, lpstr = NULL;
|
||||||
|
|
||||||
|
if (!X11DRV_CLIPBOARD_RenderFormat(display, lpData)) return 0;
|
||||||
|
|
||||||
*lpBytes = 0; /* Assume return has zero bytes */
|
*lpBytes = 0; /* Assume return has zero bytes */
|
||||||
|
|
||||||
text = GlobalLock(lpData->hData);
|
text = GlobalLock(lpData->hData);
|
||||||
|
@ -1404,18 +1410,20 @@ done:
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* X11DRV_CLIPBOARD_ExportUTF8String
|
* export_utf8_string
|
||||||
*
|
*
|
||||||
* Export CF_UNICODE converting the string to UTF8.
|
* Export CF_UNICODE converting the string to UTF8.
|
||||||
* Helper function for export_string.
|
|
||||||
*/
|
*/
|
||||||
static HANDLE X11DRV_CLIPBOARD_ExportUTF8String(LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
static HANDLE export_utf8_string(Display *display, Window requestor, Atom aTarget, Atom rprop,
|
||||||
|
LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
||||||
{
|
{
|
||||||
UINT i, j;
|
UINT i, j;
|
||||||
UINT size;
|
UINT size;
|
||||||
LPWSTR uni_text;
|
LPWSTR uni_text;
|
||||||
LPSTR text, lpstr = NULL;
|
LPSTR text, lpstr = NULL;
|
||||||
|
|
||||||
|
if (!X11DRV_CLIPBOARD_RenderFormat(display, lpData)) return 0;
|
||||||
|
|
||||||
*lpBytes = 0; /* Assume return has zero bytes */
|
*lpBytes = 0; /* Assume return has zero bytes */
|
||||||
|
|
||||||
uni_text = GlobalLock(lpData->hData);
|
uni_text = GlobalLock(lpData->hData);
|
||||||
|
@ -1452,13 +1460,12 @@ done:
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* X11DRV_CLIPBOARD_ExportCompoundText
|
* export_compound_text
|
||||||
*
|
*
|
||||||
* Export CF_UNICODE to COMPOUND_TEXT
|
* Export CF_UNICODE to COMPOUND_TEXT
|
||||||
* Helper function for export_string.
|
|
||||||
*/
|
*/
|
||||||
static HANDLE X11DRV_CLIPBOARD_ExportCompoundText(Display *display, Window requestor, Atom aTarget, Atom rprop,
|
static HANDLE export_compound_text(Display *display, Window requestor, Atom aTarget, Atom rprop,
|
||||||
LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
||||||
{
|
{
|
||||||
char* lpstr = 0;
|
char* lpstr = 0;
|
||||||
XTextProperty prop;
|
XTextProperty prop;
|
||||||
|
@ -1467,6 +1474,8 @@ static HANDLE X11DRV_CLIPBOARD_ExportCompoundText(Display *display, Window reque
|
||||||
UINT size;
|
UINT size;
|
||||||
LPWSTR uni_text;
|
LPWSTR uni_text;
|
||||||
|
|
||||||
|
if (!X11DRV_CLIPBOARD_RenderFormat(display, lpData)) return 0;
|
||||||
|
|
||||||
uni_text = GlobalLock(lpData->hData);
|
uni_text = GlobalLock(lpData->hData);
|
||||||
|
|
||||||
size = WideCharToMultiByte(CP_UNIXCP, 0, uni_text, -1, NULL, 0, NULL, NULL);
|
size = WideCharToMultiByte(CP_UNIXCP, 0, uni_text, -1, NULL, 0, NULL, NULL);
|
||||||
|
@ -1504,33 +1513,6 @@ static HANDLE X11DRV_CLIPBOARD_ExportCompoundText(Display *display, Window reque
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
* export_string
|
|
||||||
*
|
|
||||||
* Export string
|
|
||||||
*/
|
|
||||||
static HANDLE export_string(Display *display, Window requestor, Atom aTarget, Atom rprop,
|
|
||||||
LPWINE_CLIPDATA lpData, LPDWORD lpBytes)
|
|
||||||
{
|
|
||||||
if (X11DRV_CLIPBOARD_RenderFormat(display, lpData))
|
|
||||||
{
|
|
||||||
if (aTarget == XA_STRING)
|
|
||||||
return X11DRV_CLIPBOARD_ExportXAString(lpData, lpBytes);
|
|
||||||
else if (aTarget == x11drv_atom(COMPOUND_TEXT) || aTarget == x11drv_atom(TEXT))
|
|
||||||
return X11DRV_CLIPBOARD_ExportCompoundText(display, requestor, aTarget,
|
|
||||||
rprop, lpData, lpBytes);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TRACE("Exporting target %ld to default UTF8_STRING\n", aTarget);
|
|
||||||
return X11DRV_CLIPBOARD_ExportUTF8String(lpData, lpBytes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ERR("Failed to render %04x format\n", lpData->wFormatID);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* export_pixmap
|
* export_pixmap
|
||||||
|
|
Loading…
Reference in New Issue