aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix/events.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-10-08 08:09:46 +0200
committermarha <marha@users.sourceforge.net>2012-10-08 08:09:46 +0200
commitde8397bc3d010bba24ec0c4d2e6249a769a86fc7 (patch)
treea65adde1a897bd07e6009b14a23ec87f14793cf9 /xorg-server/dix/events.c
parent0130346adbce7e6b2422429887fc46c76806d845 (diff)
downloadvcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.tar.gz
vcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.tar.bz2
vcxsrv-de8397bc3d010bba24ec0c4d2e6249a769a86fc7.zip
pixman libxcb mesa xserver xkeyboard-config git update 8 oct 2012
xserver: 09f1e5b15b769e1122f0a8d7cae0820038992312 libxcb: 4ffe54f69049e6792a35a287fd9ff83abbd4fd8d mesa: 86de501f14f11f1e993c8703c0d69bdf1f6c7835 xkeyboard-config: 0a21bb5a28018902a6252fccb620d7dff7e67175 pixman: 3d81d89c292058522cce91338028d9b4c4a23c24
Diffstat (limited to 'xorg-server/dix/events.c')
-rw-r--r--xorg-server/dix/events.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c
index 3b40446bc..c0e330b85 100644
--- a/xorg-server/dix/events.c
+++ b/xorg-server/dix/events.c
@@ -1555,11 +1555,13 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
WindowPtr oldWin;
/* slave devices need to float for the duration of the grab. */
- if (grab->grabtype == XI2 &&
+ if (grab->grabtype == XI2 && keybd->enabled &&
!(passive & ImplicitGrabMask) && !IsMaster(keybd))
DetachFromMaster(keybd);
- if (grabinfo->grab)
+ if (!keybd->enabled)
+ oldWin = NULL;
+ else if (grabinfo->grab)
oldWin = grabinfo->grab->window;
else if (keybd->focus)
oldWin = keybd->focus->win;
@@ -1569,7 +1571,8 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time,
oldWin = keybd->focus->win;
if (keybd->valuator)
keybd->valuator->motionHintWindow = NullWindow;
- DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
+ if (oldWin)
+ DoFocusEvents(keybd, oldWin, grab->window, NotifyGrab);
if (syncEvents.playingEvents)
grabinfo->grabTime = syncEvents.time;
else