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.
This commit is contained in:
Peter Hutterer 2007-10-03 14:22:55 +09:30
parent 05106ac983
commit 0b48506782

View File

@ -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 &&