Track pressed state for modifiers globally. Do not track pressed state of non-modifiers.
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 21 Jan 2012 20:58:44 +0000 (12:58 -0800)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Sat, 21 Jan 2012 20:58:44 +0000 (12:58 -0800)
src/main/resources/oskeyboard.js

index 476f7ea..2c095fb 100644 (file)
@@ -249,23 +249,20 @@ Guacamole.OnScreenKeyboard = function(url) {
                         // Update modifier state
                         if (cap.modifier) {
 
-                            // Toggle pressed state
-                            key.pressed = !key.pressed;
-
                             // Construct classname for modifier
                             var modifierClass = "guac-keyboard-modifier-" + cap.modifier;
+                            var modifierFlag = getModifier(cap.modifier);
+
+                            // Toggle modifier state
+                            on_screen_keyboard.modifiers ^= modifierFlag;
 
                             // Activate modifier if pressed
-                            if (key.pressed) {
-                                on_screen_keyboard.modifiers |= getModifier(cap.modifier);
+                            if (on_screen_keyboard.modifiers & modifierFlag)
                                 keyboard.classList.add(modifierClass);
-                            }
 
                             // Deactivate if not pressed
-                            else {
-                                on_screen_keyboard.modifiers &= ~getModifier(cap.modifier);
+                            else
                                 keyboard.classList.remove(modifierClass);
-                            }
 
                         }
 
@@ -375,11 +372,6 @@ Guacamole.OnScreenKeyboard.Key = function() {
     this.size = 1;
 
     /**
-     * Whether this key is currently pressed.
-     */
-    this.pressed = false;
-
-    /**
      * An associative map of all caps by modifier.
      */
     this.caps = {};