aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2020-10-03 01:24:11 +0200
committerUlrich Sibiller <uli42@gmx.de>2021-06-20 20:12:50 +0200
commit278ebeb70d7183ba62c6bbbcfce08ff08e205117 (patch)
treefea1d1a1136f84a47c08ec50a0a1a551f5908ecf
parenta3adf6641e9d93fdeb7d345b28f59f6415bb9aa6 (diff)
downloadnx-libs-278ebeb70d7183ba62c6bbbcfce08ff08e205117.tar.gz
nx-libs-278ebeb70d7183ba62c6bbbcfce08ff08e205117.tar.bz2
nx-libs-278ebeb70d7183ba62c6bbbcfce08ff08e205117.zip
Clipboard.c: split if clause
this allows better error messages
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Clipboard.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
index da07cad40..202eb1baa 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
@@ -1003,15 +1003,24 @@ void nxagentHandleSelectionRequestFromXServer(XEvent *X)
else
#endif
{
+ if (!(nxagentOption(Clipboard) == ClipboardServer ||
+ nxagentOption(Clipboard) == ClipboardBoth))
+ {
+ #ifdef DEBUG
+ fprintf (stderr, "%s: clipboard (partly) disabled - denying request.\n", __func__);
+ #endif
+
+ /* deny the request */
+ replyRequestSelectionToXServer(X, False);
+ }
+
/*
* if one of our clients owns the selection we ask it to copy
* the selection to the clientCutProperty on nxagent's root
* window in the first step. We then later push that property's
* content to the real X server.
*/
- if (IS_INTERNAL_OWNER(index) &&
- (nxagentOption(Clipboard) == ClipboardServer ||
- nxagentOption(Clipboard) == ClipboardBoth))
+ if (IS_INTERNAL_OWNER(index))
{
/*
* store who on the real X server requested the data and how
@@ -1061,9 +1070,18 @@ void nxagentHandleSelectionRequestFromXServer(XEvent *X)
x.u.selectionRequest.requestor,
x.u.selectionRequest.selection, NameForAtom(x.u.selectionRequest.selection));
#endif
+ /* no reply to Xserver yet - we will do that once the answer of
+ the above sendEventToClient arrives */
}
else
{
+ #ifdef DEBUG
+ char *s = XGetAtomName(nxagentDisplay, X->xselectionrequest.selection);
+ fprintf (stderr, "%s: no internal owner for selection [%ld][%s] - denying request.\n", __func__,
+ X->xselectionrequest.selection, s);
+ SAFE_XFree(s);
+ #endif
+
/* deny the request */
replyRequestSelectionToXServer(X, False);
}