CB-1691: Android menu button event doesn't fire when textbox has focus

Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/876f975a
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/876f975a
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/876f975a

Branch: refs/heads/master
Commit: 876f975aa2e3d44c08f61c294d7313df859907c5
Parents: 011b512
Author: Simon MacDonald <simon.macdon...@gmail.com>
Authored: Mon Oct 29 16:20:39 2012 -0400
Committer: Simon MacDonald <simon.macdon...@gmail.com>
Committed: Mon Oct 29 16:20:39 2012 -0400

----------------------------------------------------------------------
 .../src/org/apache/cordova/CordovaWebView.java     |    7 ++++++-
 framework/src/org/apache/cordova/DroidGap.java     |    8 ++++----
 2 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/876f975a/framework/src/org/apache/cordova/CordovaWebView.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebView.java 
b/framework/src/org/apache/cordova/CordovaWebView.java
index 6ca9df6..683b0d5 100755
--- a/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/framework/src/org/apache/cordova/CordovaWebView.java
@@ -93,6 +93,8 @@ public class CordovaWebView extends WebView {
     private boolean bound;
 
     private boolean handleButton = false;
+    
+    private long lastMenuEventTime = 0;
 
        NativeToJsMessageQueue jsMessageQueue;
        ExposedJsApi exposedJsApi;
@@ -838,7 +840,10 @@ public class CordovaWebView extends WebView {
         }
         // Legacy
         else if (keyCode == KeyEvent.KEYCODE_MENU) {
-            
this.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
+            if (this.lastMenuEventTime < event.getEventTime()) {
+                
this.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
+            }
+            this.lastMenuEventTime = event.getEventTime();
             return super.onKeyUp(keyCode, event);
         }
         // If search key

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/876f975a/framework/src/org/apache/cordova/DroidGap.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/DroidGap.java 
b/framework/src/org/apache/cordova/DroidGap.java
index 1176f69..c5d60b7 100755
--- a/framework/src/org/apache/cordova/DroidGap.java
+++ b/framework/src/org/apache/cordova/DroidGap.java
@@ -1006,10 +1006,10 @@ public class DroidGap extends Activity implements 
CordovaInterface {
     public boolean onKeyUp(int keyCode, KeyEvent event)
     {
        //Determine if the focus is on the current view or not
-       if (appView.getHitTestResult() != null && 
-           appView.getHitTestResult().getType() == 
WebView.HitTestResult.EDIT_TEXT_TYPE &&
-           keyCode == KeyEvent.KEYCODE_BACK) {
-                       return appView.onKeyUp(keyCode, event);
+        if (appView.getHitTestResult() != null && 
+                appView.getHitTestResult().getType() == 
WebView.HitTestResult.EDIT_TEXT_TYPE &&
+                (keyCode == KeyEvent.KEYCODE_BACK || keyCode == 
KeyEvent.KEYCODE_MENU)) {
+                        return appView.onKeyUp(keyCode, event);
         } else if (appView.isCustomViewShowing() && keyCode == 
KeyEvent.KEYCODE_BACK) {
             return appView.onKeyUp(keyCode, event);
         } else {

Reply via email to