diff options
author | Deron Johnson <deron.johnson@sun.com> | 2005-06-10 19:54:11 +0000 |
---|---|---|
committer | Deron Johnson <deron.johnson@sun.com> | 2005-06-10 19:54:11 +0000 |
commit | b3267de5f492e803475bf3ea0df06373e006d42f (patch) | |
tree | a767591e52e7f2169a9ebcab2998007c8463097e | |
parent | dff29b681dd1ec0b514c040973639f7aa21184f1 (diff) |
Fix 353.
-rw-r--r-- | dix/events.c | 16 |
1 files changed, 16 insertions, 0 deletions
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; |