Revision: 5117
          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=5117&view=rev
Author:   ossman_
Date:     2013-05-30 14:47:17 +0000 (Thu, 30 May 2013)
Log Message:
-----------
Even if we ignore the modifiers, we still have to respect
the active group when we go looking for the level 3 shift key.

Modified Paths:
--------------
    trunk/unix/xserver/hw/vnc/InputXKB.cc

Modified: trunk/unix/xserver/hw/vnc/InputXKB.cc
===================================================================
--- trunk/unix/xserver/hw/vnc/InputXKB.cc       2013-05-29 12:37:37 UTC (rev 
5116)
+++ trunk/unix/xserver/hw/vnc/InputXKB.cc       2013-05-30 14:47:17 UTC (rev 
5117)
@@ -210,20 +210,25 @@
 
 unsigned InputDevice::getLevelThreeMask(void)
 {
+       unsigned state;
        KeyCode keycode;
        XkbDescPtr xkb;
        XkbAction *act;
 
-       keycode = keysymToKeycode(XK_ISO_Level3_Shift, 0, NULL);
+       /* Group state is still important */
+       state = getKeyboardState();
+       state &= ~0xff;
+
+       keycode = keysymToKeycode(XK_ISO_Level3_Shift, state, NULL);
        if (keycode == 0) {
-               keycode = keysymToKeycode(XK_Mode_switch, 0, NULL);
+               keycode = keysymToKeycode(XK_Mode_switch, state, NULL);
                if (keycode == 0)
                        return 0;
        }
 
        xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 
-       act = XkbKeyActionPtr(xkb, keycode, 0);
+       act = XkbKeyActionPtr(xkb, keycode, state);
        if (act == NULL)
                return 0;
        if (act->type != XkbSA_SetMods)
@@ -338,7 +343,7 @@
 
        xkb = GetMaster(keyboardDev, KEYBOARD_OR_FLOAT)->key->xkbInfo->desc;
 
-       act = XkbKeyActionPtr(xkb, keycode, 0);
+       act = XkbKeyActionPtr(xkb, keycode, state);
        if (act == NULL)
                return 0;
        if (act->type != XkbSA_SetMods)

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1
_______________________________________________
Tigervnc-commits mailing list
Tigervnc-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

Reply via email to