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:
parent
05106ac983
commit
0b48506782
|
@ -4374,7 +4374,7 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
|
||||||
* For standard events (NotifyAncestor, NotifyInferior, NotifyNonlinear)
|
* For standard events (NotifyAncestor, NotifyInferior, NotifyNonlinear)
|
||||||
* we only send an FocusIn event for the first kbd to set the focus. A
|
* 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
|
* 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
|
* For events with Virtual detail, we send them only to a window that does
|
||||||
* not have a focus from another keyboard.
|
* not have a focus from another keyboard.
|
||||||
|
@ -4392,7 +4392,9 @@ FocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
|
||||||
|
|
||||||
numFoci =
|
numFoci =
|
||||||
&((FocusSemaphoresPtr)pWin->devPrivates[FocusPrivatesIndex].ptr)->focusinout;
|
&((FocusSemaphoresPtr)pWin->devPrivates[FocusPrivatesIndex].ptr)->focusinout;
|
||||||
if (detail != NotifyVirtual &&
|
if (mode == NotifyGrab || mode == NotifyUngrab)
|
||||||
|
sendevent = TRUE;
|
||||||
|
else if (detail != NotifyVirtual &&
|
||||||
detail != NotifyNonlinearVirtual &&
|
detail != NotifyNonlinearVirtual &&
|
||||||
detail != NotifyPointer &&
|
detail != NotifyPointer &&
|
||||||
detail != NotifyPointerRoot &&
|
detail != NotifyPointerRoot &&
|
||||||
|
|
Loading…
Reference in New Issue
Block a user