summaryrefslogtreecommitdiffstats
path: root/client/x11
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2011-03-23 17:16:21 +0100
committerHans de Goede <hdegoede@redhat.com>2011-03-23 17:18:37 +0100
commit66dde82fee3c4eb5262d582aeb77935efd40def0 (patch)
tree5f7c13804351b39c5ae53d402749df692560e5d4 /client/x11
parent4020e243455641cc21af41e07ab63e19e60e08e9 (diff)
downloadspice-66dde82fee3c4eb5262d582aeb77935efd40def0.tar.gz
spice-66dde82fee3c4eb5262d582aeb77935efd40def0.tar.xz
spice-66dde82fee3c4eb5262d582aeb77935efd40def0.zip
spicec-x11: Work around a bug in xsel
Although ICCCM 2.2. Responsibilities of the Selection Owner: http://tronche.com/gui/x/icccm/sec-2.html#s-2.2 Clearly states (about selection notify events): The owner should set the specified selection, target, time, and property arguments to the values received in the SelectionRequest event. xsel sets the selection notify event target member to the incr atom when it is going to send the clipboard data incremental, rather then setting it to the UTF8_STRING atom (which was the target of the SelectionRequest). Work around this (esp as it is likely other programs may get this wrong too) and accept the incr atom as a valid target in a selection notify event. This fixes Alon's test with running: python -c "print list(range(1000))" | xsel -i -b on the client.
Diffstat (limited to 'client/x11')
-rw-r--r--client/x11/platform.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/client/x11/platform.cpp b/client/x11/platform.cpp
index 9fff947f..dbd2b6ab 100644
--- a/client/x11/platform.cpp
+++ b/client/x11/platform.cpp
@@ -2676,7 +2676,9 @@ static void handle_selection_notify(XEvent& event, bool incr)
if (clipboard_request_target == None)
LOG_INFO("SelectionNotify received without a target");
- else if (!incr && event.xselection.target != clipboard_request_target)
+ else if (!incr &&
+ event.xselection.target != clipboard_request_target &&
+ event.xselection.target != incr_atom)
LOG_WARN("Requested %s target got %s",
atom_name(clipboard_request_target),
atom_name(event.xselection.target));