diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-10-03 14:22:55 +0930 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-10-03 14:22:55 +0930 |
commit | 0b485067823620b5dbd9ef2b3e13bd35ad5a4410 (patch) | |
tree | 9dd34f00a7ef0d4059a40d688922f7192c330c69 | |
parent | 05106ac9839102c0e4a3ce5d9d83d19abf129f8a (diff) |
dix: send NotifyGrab/NotifyUngrab focus events regardless of semaphore state.
This is just papering over a problem. The whole focus system needs to be
revised.
-rw-r--r-- | dix/events.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/dix/events.c b/dix/events.c index 35abffd80..64892920b 100644 --- a/dix/events.c +++ b/dix/events.c @@ -4374,7 +4374,7 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin) * For standard events (NotifyAncestor, NotifyInferior, NotifyNonlinear) * we only send an FocusIn event for the first kbd to set the focus. A * FocusOut event is sent for the last kbd to set the focus away from the - * window.. + * window. * * For events with Virtual detail, we send them only to a window that does * not have a focus from another keyboard. @@ -4392,7 +4392,9 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin) numFoci = &((FocusSemaphoresPtr)pWin->devPrivates[FocusPrivatesIndex].ptr)->focusinout; - if (detail != NotifyVirtual && + if (mode == NotifyGrab || mode == NotifyUngrab) + sendevent = TRUE; + else if (detail != NotifyVirtual && detail != NotifyNonlinearVirtual && detail != NotifyPointer && detail != NotifyPointerRoot && |