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
From fa294cc020d285df6286195fd435c5c386257711 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller <ul...@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.gabr...@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 <ul...@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
_______________________________________________ x2go-dev mailing list x2go-dev@lists.x2go.org http://lists.x2go.org/listinfo/x2go-dev