summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-10-24 10:26:12 +0930
committerPeter Hutterer <peter@cs.unisa.edu.au>2007-10-24 10:26:12 +0930
commitb7ee005d327372c1e414ee6c526f9f7aee14bc86 (patch)
tree1b460105b0358d08856c4c2adc89162d40cf2049
parent02508614b9f882ba1559fb4581dcf812118fdf89 (diff)
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.
-rw-r--r--dix/events.c4
1 files changed, 3 insertions, 1 deletions
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;