summaryrefslogtreecommitdiff
path: root/hw/xwin/winclipboardxevents.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/xwin/winclipboardxevents.c')
-rw-r--r--hw/xwin/winclipboardxevents.c54
1 files changed, 33 insertions, 21 deletions
diff --git a/hw/xwin/winclipboardxevents.c b/hw/xwin/winclipboardxevents.c
index 226c3f055..a4d193d93 100644
--- a/hw/xwin/winclipboardxevents.c
+++ b/hw/xwin/winclipboardxevents.c
@@ -122,6 +122,7 @@ winClipboardFlushXEvents(HWND hwnd,
atomUTF8String,
XA_STRING
};
+ winDebug("SelectionRequest - populating targets\n");
/* Try to change the property */
iReturn = XChangeProperty(pDisplay,
@@ -367,6 +368,7 @@ winClipboardFlushXEvents(HWND hwnd,
* client when we abort.
*/
if (fAbort) {
+ winDebug("SelectionRequest - aborting\n");
/* Setup selection notify event */
eventSelection.type = SelectionNotify;
eventSelection.send_event = True;
@@ -463,6 +465,23 @@ winClipboardFlushXEvents(HWND hwnd,
}
}
+ case SelectionClear:
+ winDebug("SelectionClear - doing nothing\n");
+ break;
+
+ case PropertyNotify:
+ {
+ char *pszAtomName;
+
+ pszAtomName = XGetAtomName(pDisplay, event.xproperty.atom);
+ winDebug("winClipboardFlushXEvents - PropertyNotify - ATOM: %s\n",
+ pszAtomName);
+ XFree(pszAtomName);
+ }
+
+ if (event.xproperty.atom != atomLocalProperty)
+ break;
+
/* Retrieve the size of the stored data */
iReturn = XGetWindowProperty(pDisplay, iWindow, atomLocalProperty, 0, 0, /* Don't get data, just size */
False,
@@ -472,12 +491,12 @@ winClipboardFlushXEvents(HWND hwnd,
&xtpText.nitems,
&ulReturnBytesLeft, &xtpText.value);
if (iReturn != Success) {
- ErrorF("winClipboardFlushXEvents - SelectionNotify - "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify - "
"XGetWindowProperty () failed, aborting: %d\n", iReturn);
break;
}
- winDebug("SelectionNotify - returned data %d left %d\n",
+ winDebug("PropertyNotify - returned data %d left %d\n",
xtpText.nitems, ulReturnBytesLeft);
/* Request the selection data */
@@ -493,7 +512,7 @@ winClipboardFlushXEvents(HWND hwnd,
&xtpText.nitems,
&ulReturnBytesLeft, &xtpText.value);
if (iReturn != Success) {
- ErrorF("winClipboardFlushXEvents - SelectionNotify - "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify - "
"XGetWindowProperty () failed, aborting: %d\n", iReturn);
break;
}
@@ -501,10 +520,11 @@ winClipboardFlushXEvents(HWND hwnd,
{
char *pszAtomName = NULL;
- winDebug("SelectionNotify - returned data %d left %d\n",
+ winDebug("PropertyNotify - returned data %d left %d\n",
xtpText.nitems, ulReturnBytesLeft);
pszAtomName = XGetAtomName(pDisplay, xtpText.encoding);
- winDebug("Notify atom name %s\n", pszAtomName);
+ winDebug("PropertyNotify - encoding atom name %s\n",
+ pszAtomName);
XFree(pszAtomName);
pszAtomName = NULL;
}
@@ -536,14 +556,14 @@ winClipboardFlushXEvents(HWND hwnd,
}
}
else {
- ErrorF("winClipboardFlushXEvents - SelectionNotify - "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify - "
"X*TextPropertyToTextList list_return is NULL.\n");
pszReturnData = malloc(1);
pszReturnData[0] = '\0';
}
}
else {
- ErrorF("winClipboardFlushXEvents - SelectionNotify - "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify - "
"X*TextPropertyToTextList returned: ");
switch (iReturn) {
case XNoMemory:
@@ -584,12 +604,12 @@ winClipboardFlushXEvents(HWND hwnd,
pwszUnicodeStr
= (wchar_t *) malloc(sizeof(wchar_t) * (iUnicodeLen + 1));
if (!pwszUnicodeStr) {
- ErrorF("winClipboardFlushXEvents - SelectionNotify "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify "
"malloc failed for pwszUnicodeStr, aborting.\n");
/* Abort */
fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
+ goto winClipboardFlushXEvents_PropertyNotify_Done;
}
/* Do the actual conversion */
@@ -614,12 +634,11 @@ winClipboardFlushXEvents(HWND hwnd,
/* Check that global memory was allocated */
if (!hGlobal) {
- ErrorF("winClipboardFlushXEvents - SelectionNotify "
+ ErrorF("winClipboardFlushXEvents - PropertyNotify "
"GlobalAlloc failed, aborting: %ld\n", GetLastError());
-
/* Abort */
fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
+ goto winClipboardFlushXEvents_PropertyNotify_Done;
}
/* Obtain a pointer to the global memory */
@@ -630,7 +649,7 @@ winClipboardFlushXEvents(HWND hwnd,
/* Abort */
fAbort = TRUE;
- goto winClipboardFlushXEvents_SelectionNotify_Done;
+ goto winClipboardFlushXEvents_PropertyNotify_Done;
}
/* Copy the returned string into the global memory */
@@ -664,7 +683,7 @@ winClipboardFlushXEvents(HWND hwnd,
* Windows after the call to SetClipboardData ().
*/
- winClipboardFlushXEvents_SelectionNotify_Done:
+ winClipboardFlushXEvents_PropertyNotify_Done:
/* Free allocated resources */
if (ppszTextList)
XFreeStringList(ppszTextList);
@@ -683,13 +702,6 @@ winClipboardFlushXEvents(HWND hwnd,
}
return WIN_XEVENTS_NOTIFY;
- case SelectionClear:
- winDebug("SelectionClear - doing nothing\n");
- break;
-
- case PropertyNotify:
- break;
-
case MappingNotify:
break;