From 7efd4dfaea3a9de56631719fbb15903c407732c9 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 21 Mar 2012 16:10:49 -0700 Subject: [PATCH] Add text field event target, focus event target if "Show Keyboard" is clicked and use exposed the menu via long-press. Ensure backspace always sends a key event by always keeping text within the event target. --- src/main/webapp/client.xhtml | 4 ++++ src/main/webapp/scripts/interface.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/webapp/client.xhtml b/src/main/webapp/client.xhtml index 27caec5..3523bae 100644 --- a/src/main/webapp/client.xhtml +++ b/src/main/webapp/client.xhtml @@ -54,6 +54,10 @@ +
diff --git a/src/main/webapp/scripts/interface.js b/src/main/webapp/scripts/interface.js index f869e35..73a9384 100644 --- a/src/main/webapp/scripts/interface.js +++ b/src/main/webapp/scripts/interface.js @@ -8,6 +8,7 @@ var GuacamoleUI = { "menuControl" : document.getElementById("menuControl"), "touchMenu" : document.getElementById("touchMenu"), "logo" : document.getElementById("status-logo"), + "eventTarget" : document.getElementById("eventTarget"), "buttons": { @@ -177,10 +178,19 @@ var GuacamoleUI = { }; + var assumeNativeOSK = false; + // Show/Hide keyboard var keyboardResizeInterval = null; GuacamoleUI.buttons.showKeyboard.onclick = function() { + // If we think the platform has a native OSK, use the event target to + // cause it to display. + if (assumeNativeOSK) { + GuacamoleUI.eventTarget.focus(); + return; + } + var displayed = GuacamoleUI.containers.keyboard.style.display; if (displayed != "block") { GuacamoleUI.containers.keyboard.style.display = "block"; @@ -282,6 +292,9 @@ var GuacamoleUI = { menuShowLongPressTimeout = window.setTimeout(function() { menuShowLongPressTimeout = null; + + // Assume native OSK if menu shown via long-press + assumeNativeOSK = true; GuacamoleUI.showMenu(); }, 800); @@ -294,6 +307,11 @@ var GuacamoleUI = { menuShowLongPressTimeout = null; }; + // Ensure the event target ALWAYS has text inside. + GuacamoleUI.eventTarget.onchange = function() { + GuacamoleUI.eventTarget.value = "x"; + }; + // Detect long-press at bottom of screen document.body.addEventListener('touchstart', GuacamoleUI.startLongPressDetect, true); -- 1.7.10.4