Xming: Check clipboard selection ownership after taking it

When you take ownership of a selection you should always check you got
it (X11 ICCCM gospel).

Copyright (C) Colin Harrison 2005-2008
http://www.straightrunning.com/XmingNotes/
http://sourceforge.net/projects/xming/

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
Colin Harrison 2009-02-03 15:57:29 +00:00 committed by Jon TURNEY
parent cb6315072f
commit d7c27bfe55
2 changed files with 12 additions and 4 deletions

View File

@ -273,7 +273,8 @@ winClipboardProc (void *pvNotUsed)
/* PRIMARY */
iReturn = XSetSelectionOwner (pDisplay, XA_PRIMARY,
iWindow, CurrentTime);
if (iReturn == BadAtom || iReturn == BadWindow)
if (iReturn == BadAtom || iReturn == BadWindow ||
XGetSelectionOwner (pDisplay, XA_PRIMARY) != iWindow)
{
ErrorF ("winClipboardProc - Could not set PRIMARY owner\n");
pthread_exit (NULL);
@ -282,7 +283,8 @@ winClipboardProc (void *pvNotUsed)
/* CLIPBOARD */
iReturn = XSetSelectionOwner (pDisplay, atomClipboard,
iWindow, CurrentTime);
if (iReturn == BadAtom || iReturn == BadWindow)
if (iReturn == BadAtom || iReturn == BadWindow ||
XGetSelectionOwner (pDisplay, atomClipboard) != iWindow)
{
ErrorF ("winClipboardProc - Could not set CLIPBOARD owner\n");
pthread_exit (NULL);

View File

@ -385,7 +385,8 @@ winClipboardWindowProc (HWND hwnd, UINT message,
XA_PRIMARY,
iWindow,
CurrentTime);
if (iReturn == BadAtom || iReturn == BadWindow)
if (iReturn == BadAtom || iReturn == BadWindow ||
XGetSelectionOwner (pDisplay, XA_PRIMARY) != iWindow)
{
winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
"Could not reassert ownership of PRIMARY\n");
@ -403,7 +404,12 @@ winClipboardWindowProc (HWND hwnd, UINT message,
False),
iWindow,
CurrentTime);
if (iReturn == BadAtom || iReturn == BadWindow)
if (iReturn == BadAtom || iReturn == BadWindow ||
XGetSelectionOwner (pDisplay,
XInternAtom (pDisplay,
"CLIPBOARD",
False)) != iWindow)
{
winErrorFVerb (1, "winClipboardWindowProc - WM_DRAWCLIPBOARD - "
"Could not reassert ownership of CLIPBOARD\n");