And copy into the master keyboard, not just the directly attached device.

Signed-off-by: Peter Hutterer <[email protected]>
---
On Fri, Feb 18, 2011 at 10:48:10AM +0100, Benjamin Tissoires wrote:
> >@@ -5883,9 +5884,8 @@ ProcXkbGetKbdByName(ClientPtr client)
> >         nkn.changed|= XkbNKN_GeometryMask;
> >     XkbSendNewKeyboardNotify(dev,&nkn);
> >
> >-    if (!IsMaster(dev)&&  !IsFloating(dev))
> >+    if (!IsMaster(dev)&&  (master = GetMaster(dev, MASTER_KEYBOARD)))
> 
> I had a quick watch on the series, and this line worries me: I all
> the time consider putting an affectation in a test as a bug (or
> source of bug) as it's ambiguous. I know that it's valid in this
> case, but I don't like it.
> 
> Sorry for the noise if you consider this as valid. ;)

who am I to argue with that :)

another change: the previous patch would still copy the keymap into the
attached master, not the master keyboard. fix this.

 xkb/xkb.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/xkb/xkb.c b/xkb/xkb.c
index 43d847a..5da2814 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5883,12 +5883,10 @@ ProcXkbGetKbdByName(ClientPtr client)
            nkn.changed|= XkbNKN_GeometryMask;
        XkbSendNewKeyboardNotify(dev,&nkn);
 
-       if (!IsMaster(dev) && !IsFloating(dev))
-       {
-           DeviceIntPtr master = dev->u.master;
-           if (master->u.lastSlave == dev)
-           {
-               XkbCopyDeviceKeymap(dev->u.master, dev);
+       if (!IsMaster(dev)) {
+           DeviceIntPtr master = GetMaster(dev, MASTER_KEYBOARD);
+           if (master && master->u.lastSlave == dev) {
+               XkbCopyDeviceKeymap(master, dev);
                XkbSendNewKeyboardNotify(dev,&nkn);
            }
        }
-- 
1.7.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to