Add text field event target, focus event target if "Show Keyboard" is clicked and...
authorMichael Jumper <zhangmaike@users.sourceforge.net>
Wed, 21 Mar 2012 23:10:49 +0000 (16:10 -0700)
committerMichael Jumper <zhangmaike@users.sourceforge.net>
Wed, 21 Mar 2012 23:10:49 +0000 (16:10 -0700)
src/main/webapp/client.xhtml
src/main/webapp/scripts/interface.js

index 27caec5..3523bae 100644 (file)
 
         </div>
 
+        <input id="eventTarget"
+               type="text"
+               style="width: 0; height: 0; position: fixed; opacity: 0"
+               value="x"/>
 
         <!-- Display -->
         <div id="display">
index f869e35..73a9384 100644 (file)
@@ -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);