1 |
From 43a106bba319ed33321927f2ba7f0fa62a4b6a36 Mon Sep 17 00:00:00 2001 |
2 |
From: Eric Biggers <ebiggers3@gmail.com> |
3 |
Date: Sun, 6 Mar 2016 11:45:59 -0600 |
4 |
Subject: [PATCH 2/2] Send correct SelectionNotify event when starting INCR |
5 |
transfer |
6 |
|
7 |
The target should be copied from that given in SelectionRequest, not set |
8 |
to INCR. This fixes a bug where it was impossible to paste > 4000 |
9 |
characters of text from xsel to the Chromium browser. Note that some |
10 |
programs, including Chromium, validate the 'target' that is passed back; |
11 |
while other programs, such as those which use the GTK clipboard API, |
12 |
ignore it. But based the ICCCM, it appears that xsel is incorrect, not |
13 |
chromium: |
14 |
|
15 |
"The owner should set the specified selection, target, time, and |
16 |
propety arguments to the values received in the SelectionRequest event." |
17 |
--- |
18 |
xsel.c | 4 ++-- |
19 |
1 file changed, 2 insertions(+), 2 deletions(-) |
20 |
|
21 |
diff --git a/xsel.c b/xsel.c |
22 |
index b131ca6..44259b5 100644 |
23 |
--- a/xsel.c |
24 |
+++ b/xsel.c |
25 |
@@ -1185,13 +1185,13 @@ change_property (Display * display, Window requestor, Atom property, |
26 |
print_debug (D_TRACE, "large data transfer"); |
27 |
|
28 |
|
29 |
- /* Send a SelectionNotify event of type INCR */ |
30 |
+ /* Send a SelectionNotify event */ |
31 |
ev.type = SelectionNotify; |
32 |
ev.display = display; |
33 |
ev.requestor = requestor; |
34 |
ev.selection = selection; |
35 |
ev.time = time; |
36 |
- ev.target = incr_atom; /* INCR */ |
37 |
+ ev.target = target; |
38 |
ev.property = property; |
39 |
|
40 |
XSelectInput (ev.display, ev.requestor, PropertyChangeMask); |
41 |
-- |
42 |
2.14.3 |
43 |
|