[X2Go-Dev] Bug#585: Fix
Ulrich Sibiller
uli42 at gmx.de
Tue Nov 4 23:51:35 CET 2014
Without XFIXES the client calls GetSelectionOwner() before every paste
operation and therefor always knows the current selection owner.
With XFIXES some clients rely solely on the
XFixesSelectSelectionInput/XFixesSelectionNotify mechanism. But they
never receive any notifications because the nxagent does not register
at the real X server to receive those notifications itself and so
never gets anything to forward to the clients. A client assuming it
will get informed about owner changes skips the GetSelectionOwner()
call. So it never knows that the selection owner has changed and
refers to what it thinks the current owner is (itself).
Attached is a fix for this bug. nxagent calls
XFixesSelectSelectionInput for all its selections (t.i. CLIPBOARD and
PRIMARY, _not_ SECONDARY) now. It (still) does not check the return
code but the original code registering only CLIPBOARD did neither...
This is a complete patch generated by git format-patch after using
(d)quilt as documented in the wiki.
As I did not find any hints of what patch number to choose I took 207
to put it as close as possible to other clipboard related patches.
Feel free to change that...
Uli
-------------- next part --------------
From fa294cc020d285df6286195fd435c5c386257711 Mon Sep 17 00:00:00 2001
From: Ulrich Sibiller <uli42 at gmx.de>
Date: Tue, 4 Nov 2014 22:24:19 +0100
Subject: [PATCH] Add 207_nxagent_fix-xfixes-selection.full.patch. Fix
selection handling when XFIXES is enabled. (Fixes: #585).
---
debian/changelog | 4 +++
.../207_nxagent_fix-xfixes-selection.full.patch | 32 ++++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 37 insertions(+)
create mode 100644 debian/patches/207_nxagent_fix-xfixes-selection.full.patch
diff --git a/debian/changelog b/debian/changelog
index 766db52..0356bf8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -37,6 +37,10 @@ nx-libs (2:3.5.0.28-0x2go1) UNRELEASED; urgency=medium
* Add 400_nxcomp-version.full+lite.patch. Allow 4-digit version comparison
during NX session handshake. (Fixes: #610).
+ [ Ulrich Sibiller ]
+ * Add 207_nxagent_fix-xfixes-selection.full.patch. Fix selection handling
+ when XFIXES is enabled. (Fixes: #585)
+
-- Mike Gabriel <mike.gabriel at das-netzwerkteam.de> Mon, 30 Jun 2014 15:05:54 +0200
nx-libs (2:3.5.0.27-0x2go1) unstable; urgency=medium
diff --git a/debian/patches/207_nxagent_fix-xfixes-selection.full.patch b/debian/patches/207_nxagent_fix-xfixes-selection.full.patch
new file mode 100644
index 0000000..0ee74e5
--- /dev/null
+++ b/debian/patches/207_nxagent_fix-xfixes-selection.full.patch
@@ -0,0 +1,32 @@
+Description: Fix XFIXES selection handling (copy and paste via middle
+ mouse button). When nxagent has the XFIXES extension enabled copy and
+ paste from outside applications to applications within the session
+ that rely on XFixesSelectSelectionInput (e.g. qt applications like
+ konsole) did never receive any notifications because the nxagent did
+ not register itself at the real X server to receive them. Fixes Bug
+ #585.
+Author: Ulrich Sibiller <uli42 at gmx.de>
+
+Index: nx-libs/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+===================================================================
+--- nx-libs.orig/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c 2014-11-04 22:42:50.893569624 +0100
++++ nx-libs/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c 2014-11-04 22:42:50.893569624 +0100
+@@ -1556,10 +1556,14 @@
+ fprintf(stderr, "nxagentInitClipboard: Registering for XFixesSelectionNotify events.\n");
+ #endif
+
+- XFixesSelectSelectionInput(nxagentDisplay, iWindow, nxagentClipboardAtom,
+- XFixesSetSelectionOwnerNotifyMask |
+- XFixesSelectionWindowDestroyNotifyMask |
+- XFixesSelectionClientCloseNotifyMask);
++ for (i = 0; i < nxagentMaxSelections; i++)
++ {
++ XFixesSelectSelectionInput(nxagentDisplay, iWindow,
++ lastSelectionOwner[i].selection,
++ XFixesSetSelectionOwnerNotifyMask |
++ XFixesSelectionWindowDestroyNotifyMask |
++ XFixesSelectionClientCloseNotifyMask);
++ }
+
+ nxagentXFixesInfo.Initialized = 1;
+ }
diff --git a/debian/patches/series b/debian/patches/series
index 3a37ac5..4e792a2 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -50,6 +50,7 @@
204_nxagent_repaint-solidpict.full.patch
205_nxagent_refresh-adsl.full.patch
206_nxagent_clipboard-as-nxoption.full.patch
+207_nxagent_fix-xfixes-selection.full.patch
209_x2goagent_add-man-page.full.patch
210_nxagent_save_session_state.full.patch
210_nxcomp_save_session_state.full+lite.patch
--
1.9.1
More information about the x2go-dev
mailing list