summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-05-26 14:56:40 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-05-27 13:54:19 +1000
commit023f959e6812e63f9d38b078158275bc13d238ae (patch)
tree8d1ab289869cae68a2f407e7d04081732e0648b9
parentb3463fd6a89d50a7562c357aeb5314ce0fd6493d (diff)
Xi: fix an inputInfo.keyboard usage.
In the case of a RevertToFollowKeyboard, the master device should be used (since this is the closest equivalent to the VCK as before). Only if the master keyboard is the same as the device, revert to the VCK itself.
-rw-r--r--Xi/exevents.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 2bcc2e103..83891f87f 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1846,16 +1846,20 @@ DeleteDeviceFromAnyExtEvents(WindowPtr pWin, DeviceIntPtr dev)
dev->focus->traceGood = 0;
break;
case RevertToFollowKeyboard:
- if (inputInfo.keyboard->focus->win) {
- DoFocusEvents(dev, pWin, inputInfo.keyboard->focus->win,
- focusEventMode);
+ {
+ DeviceIntPtr kbd = GetMaster(dev, MASTER_KEYBOARD);
+ if (!kbd || (kbd == dev && kbd != inputInfo.keyboard))
+ kbd = inputInfo.keyboard;
+ if (kbd->focus->win) {
+ DoFocusEvents(dev, pWin, kbd->focus->win, focusEventMode);
dev->focus->win = FollowKeyboardWin;
dev->focus->traceGood = 0;
} else {
- DoFocusEvents(dev, pWin, NoneWin, focusEventMode);
+ DoFocusEvents(dev, pWin, NoneWin, focusEventMode);
dev->focus->win = NoneWin;
dev->focus->traceGood = 0;
}
+ }
break;
}
}