From b3267de5f492e803475bf3ea0df06373e006d42f Mon Sep 17 00:00:00 2001 From: Deron Johnson Date: Fri, 10 Jun 2005 19:54:11 +0000 Subject: [PATCH] Fix 353. --- dix/events.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dix/events.c b/dix/events.c index b1d331817..3ab89c1b7 100644 --- a/dix/events.c +++ b/dix/events.c @@ -1125,6 +1125,22 @@ lgeTryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask, return TryClientEvents (client, pEvents, count, mask, filter, grab); } +#ifdef LG3D + /* + ** Fix for 353: When a 2D grab is enabled the CEP all-grab should be + ** disabled. If we don't do this then if you drag outside a native window + ** during a grab, the DS will receive events even though a 2D grab is + ** active, which is very, very bad. + ** + ** TODO: KLUDGE: this is a kludgey way to fix this problem. It may be that + ** the way to solve the problem is to eliminate all-grab entirely. But we + ** are not quite ready to do this yet. + */ + if (lgeDisplayServerIsAlive && grab && !IsWinLgePRWWin(grab->window)) { + return TryClientEvents (client, pEvents, count, mask, filter, grab); + } +#endif /* LG3D */ + for (i = 0; i < count; i++) { Window win; int destination;