diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2024-06-29 19:13:03 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2024-11-23 08:44:44 +0100 |
commit | 3e2d18ba63d804a1052663044ad61a57b2351ba8 (patch) | |
tree | 3acc52dffe79d66d44cab431da3c6bf65f6130ae /nx-X11/programs/Xserver | |
parent | b6fae31a27591c1e04fdf74ec31e7dc95ba77fc5 (diff) | |
download | nx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.tar.gz nx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.tar.bz2 nx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.zip |
prematurely abort ProcSendEvent if a ClientMsg has been fordwarded
Fixes ArcticaProject/nx-libs#1065
Diffstat (limited to 'nx-X11/programs/Xserver')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Events.c | 6 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Events.h | 2 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/NXevents.c | 4 |
3 files changed, 7 insertions, 5 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 6456e244a..a29f08d1d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -4505,7 +4505,7 @@ int nxagentWaitEvents(Display *dpy, useconds_t msec) return 1; } -void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff) +Bool ForwardClientMessage(ClientPtr client, xSendEventReq *stuff) { Atom netwmstate = MakeAtom("_NET_WM_STATE", strlen("_NET_WM_STATE"), False); Atom wmchangestate = MakeAtom("WM_CHANGE_STATE", strlen("WM_CHANGE_STATE"), False); @@ -4548,7 +4548,7 @@ void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff) #endif } else - return; // ERROR! + return False; // ERROR! #ifdef DEBUG fprintf(stderr, "%s: window [0x%lx]\n", __func__, X.xclient.window); @@ -4568,8 +4568,10 @@ void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff) fprintf(stderr, "%s: send to window [0x%lx]\n", __func__, dest); fprintf(stderr, "%s: return Status [%d]\n", __func__, stat); #endif + return True; } } + return False; } #ifdef NX_DEBUG_INPUT diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.h b/nx-X11/programs/Xserver/hw/nxagent/Events.h index 379bbbcc6..7b15f6274 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.h @@ -222,6 +222,6 @@ int nxagentPendingEvents(Display *dpy); int nxagentWaitEvents(Display *, useconds_t msec); -void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff); +Bool ForwardClientMessage(ClientPtr client, xSendEventReq *stuff); #endif /* __Events_H__ */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c index 68fb3f412..f5c5fd2c9 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c @@ -429,8 +429,8 @@ ProcSendEvent(ClientPtr client) if (nxagentOption(Rootless) && stuff->event.u.u.type == ClientMessage) { - ForwardClientMessage(client, stuff); - return Success; + if (ForwardClientMessage(client, stuff)) + return Success; } if (stuff -> event.u.u.type == SelectionNotify) |