GUAC-324: Maintain scroll state of menu. Separate touch from mouse. Allow default actions from touch events on menu only.

This commit is contained in:
Michael Jumper
2014-04-21 19:31:57 -07:00
parent 28e941675f
commit bb0cc1c63a

View File

@@ -817,11 +817,8 @@ GuacUI.Client.showMenu = function(shown) {
GuacUI.Client.menu.className = "closed";
GuacUI.Client.commitClipboard();
}
else {
GuacUI.Client.menu.scrollLeft = 0;
GuacUI.Client.menu.scrollTop = 0;
else
GuacUI.Client.menu.className = "open";
}
};
/**
@@ -1162,11 +1159,7 @@ GuacUI.Client.attach = function(guac) {
*/
// Mouse
var mouse = new Guacamole.Mouse(guac_display);
var touch = new Guacamole.Mouse.Touchscreen(guac_display);
touch.onmousedown = touch.onmouseup = touch.onmousemove =
mouse.onmousedown = mouse.onmouseup = mouse.onmousemove =
function(mouseState) {
function __handle_mouse_state(mouseState) {
// Scale event by current scale
var scaledState = new Guacamole.Mouse.State(
@@ -1183,8 +1176,13 @@ GuacUI.Client.attach = function(guac) {
};
var touch = new Guacamole.Mouse.Touchscreen(guac_display);
touch.onmousedown = touch.onmouseup = touch.onmousemove = __handle_mouse_state;
GuacUI.Client.touch = touch;
var mouse = new Guacamole.Mouse(guac_display);
mouse.onmousedown = mouse.onmouseup = mouse.onmousemove = __handle_mouse_state;
// Hide any existing status notifications
GuacUI.Client.hideStatus();
@@ -1620,7 +1618,25 @@ GuacUI.Client.attach = function(guac) {
// Prevent default on all touch events
document.addEventListener("touchstart", function(e) {
// Inspect touch event target to determine whether the touch should
// be allowed.
if (e.touches.length === 1) {
var element = e.target;
while (element) {
// Allow single-touch events on the menu
if (element === GuacUI.Client.menu)
return;
element = element.parentNode;
}
}
e.preventDefault();
}, false);
})();