From b7ee005d327372c1e414ee6c526f9f7aee14bc86 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 24 Oct 2007 10:26:12 +0930 Subject: [PATCH] dix: Don't interfere grabs the interfering device is of different type. A pointer device should be able to send events while the client has a core grab on a keyboard device, and likewise. --- dix/events.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dix/events.c b/dix/events.c index 7a21af1d1..2032b42ca 100644 --- a/dix/events.c +++ b/dix/events.c @@ -6206,7 +6206,9 @@ IsInterferingGrab(ClientPtr client, DeviceIntPtr dev, xEvent* event) if (it->deviceGrab.grab && SameClient(it->deviceGrab.grab, client) && !it->deviceGrab.fromPassiveGrab) { - return TRUE; + if ((IsPointerDevice(it) && IsPointerDevice(dev)) || + (IsKeyboardDevice(it) && IsKeyboardDevice(dev))) + return TRUE; } } it = it->next;