shade_interval = window.setInterval(function() {
offset -= step;
- GuacamoleUI.menu.style.top = offset + "px";
+
+ GuacamoleUI.menu.style.transform =
+ GuacamoleUI.menu.style.WebkitTransform =
+ GuacamoleUI.menu.style.MozTransform =
+ GuacamoleUI.menu.style.OTransform =
+ GuacamoleUI.menu.style.msTransform =
+
+ "translateY(" + offset + "px)";
if (offset <= -GuacamoleUI.menu.offsetHeight) {
window.clearInterval(shade_interval);
window.clearInterval(show_interval);
}
- GuacamoleUI.menu.style.top = offset + "px";
+ GuacamoleUI.menu.style.transform =
+ GuacamoleUI.menu.style.WebkitTransform =
+ GuacamoleUI.menu.style.MozTransform =
+ GuacamoleUI.menu.style.OTransform =
+ GuacamoleUI.menu.style.msTransform =
+
+ "translateY(" + offset + "px)";
}, GuacamoleUI.MENU_SHOW_INTERVAL);
}
}
};
+ // Turn off autocorrect and autocapitalization on eventTarget
+ GuacamoleUI.eventTarget.setAttribute("autocorrect", "off");
+ GuacamoleUI.eventTarget.setAttribute("autocapitalize", "off");
+
})();
// Tie UI events / behavior to a specific Guacamole client
// Keyboard
var keyboard = new Guacamole.Keyboard(document);
- var keysymPressed = [];
// Monitor whether the event target is focused
var eventTargetFocused = false;
+ // Save length for calculation of changed value
+ var currentLength = GuacamoleUI.eventTarget.value.length;
+
GuacamoleUI.eventTarget.onfocus = function() {
eventTargetFocused = true;
+ GuacamoleUI.eventTarget.value = "";
+ currentLength = 0;
};
GuacamoleUI.eventTarget.onblur = function() {
eventTargetFocused = false;
};
- // Save length for calculation of changed value
- var currentLength = GuacamoleUI.eventTarget.value.length;
-
// If text is input directly into event target without typing (as with
// voice input, for example), type automatically.
GuacamoleUI.eventTarget.oninput = function(e) {
// Calculate current length and change in length
- var newLength = GuacamoleUI.eventTarget.value.length;
- var changeLength = newLength - currentLength;
- currentLength = newLength;
+ var oldLength = currentLength;
+ currentLength = GuacamoleUI.eventTarget.value.length;
// If deleted or replaced text, ignore
- if (changeLength <= 0)
+ if (currentLength <= oldLength)
return;
// Get changed text
- var text = GuacamoleUI.eventTarget.value.substring(
- GuacamoleUI.eventTarget.selectionStart,
- GuacamoleUI.eventTarget.selectionStart + changeLength
- );
+ var text = GuacamoleUI.eventTarget.value.substring(oldLength);
// Send each character
for (var i=0; i<text.length; i++) {
keysym = 0x01000000 | charCode;
// Send keysym only if not already pressed
- if (!keysymPressed[keysym]) {
+ if (!keyboard.pressed[keysym]) {
// Press and release key
guac.sendKeyEvent(1, keysym);
keyboard.onkeydown = function (keysym) {
guac.sendKeyEvent(1, keysym);
- keysymPressed[keysym] = true;
return eventTargetFocused && isTypableCharacter(keysym);
};
keyboard.onkeyup = function (keysym) {
guac.sendKeyEvent(0, keysym);
- keysymPressed[keysym] = false;
return eventTargetFocused && isTypableCharacter(keysym);
};