[X2Go-Commits] [nx-libs] 60/219: Add nxagentSetSelectionCallback
git-admin at x2go.org
git-admin at x2go.org
Sat Sep 28 12:10:21 CEST 2019
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch 3.6.x
in repository nx-libs.
commit 2972f6af1b63f4e98aa4504a83f756b8486c7df0
Author: Ulrich Sibiller <uli42 at gmx.de>
Date: Mon Jun 10 14:20:47 2019 +0200
Add nxagentSetSelectionCallback
---
nx-X11/programs/Xserver/hw/nxagent/Clipboard.c | 69 ++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
index 824c1dc47..9c518801b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
@@ -1257,6 +1257,75 @@ void nxagentResetSelectionOwner(void)
return;
}
+#ifdef NXAGENT_CLIPBOARD
+void nxagentSetSelectionCallback(CallbackListPtr *callbacks, void *data,
+ void *args)
+{
+ /*
+ * Only act if the Trap is unset. The trap indicates that we are
+ * triggered by a clipboard event originating from the real X
+ * server. In that case we do not want to propagate back changes to
+ * the real X server, because it already knows about them and we
+ * would end up in an infinite loop of events. If there was a better
+ * way to identify that situation during Callback processing we
+ * could get rid of the Trap...
+ */
+ if (nxagentExternalClipboardEventTrap != 0)
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: Trap is set, doing nothing\n", __func__);
+ #endif
+ return;
+ }
+
+ SelectionInfoRec *info = (SelectionInfoRec *)args;
+
+ Selection * pCurSel = (Selection *)info->selection;
+
+ #ifdef DEBUG
+ fprintf(stderr, "%s: pCurSel->lastTimeChanged [%d]\n", __func__, pCurSel->lastTimeChanged.milliseconds);
+ #endif
+
+ if (info->kind == SelectionSetOwner)
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: called with SelectionCallbackKind SelectionSetOwner\n", __func__);
+ fprintf(stderr, "%s: pCurSel->pWin [0x%x]\n", __func__, pCurSel->pWin ? pCurSel->pWin->drawable.id : NULL);
+ fprintf(stderr, "%s: pCurSel->selection [%s]\n", __func__, NameForAtom(pCurSel->selection));
+ #endif
+
+ if ((pCurSel->pWin != NULL) &&
+ (nxagentOption(Clipboard) != ClipboardNone) &&
+ ((pCurSel->selection == XA_PRIMARY) ||
+ (pCurSel->selection == MakeAtom("CLIPBOARD", 9, 0))))
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: calling nxagentSetSelectionOwner\n", __func__);
+ #endif
+ nxagentSetSelectionOwner(pCurSel);
+ }
+ }
+ else if (info->kind == SelectionWindowDestroy)
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: called with SelectionCallbackKind SelectionWindowDestroy\n", __func__);
+ #endif
+ }
+ else if (info->kind == SelectionClientClose)
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: called with SelectionCallbackKind SelectionClientClose\n", __func__);
+ #endif
+ }
+ else
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: called with unknown SelectionCallbackKind\n", __func__);
+ #endif
+ }
+}
+#endif
+
void nxagentSetSelectionOwner(Selection *pSelection)
{
#ifdef DEBUG
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git
More information about the x2go-commits
mailing list