Check second down event of double tap is on shift key

This change also removes unnecessary touch point tweaks.

Bug: 3385404
Change-Id: Ic398268ec4fcfaa9eafe8a70f2d10c2cd1fdfc62
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 6d7bfb8..5827058 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -403,7 +403,7 @@
 
         GestureDetector.SimpleOnGestureListener listener =
                 new GestureDetector.SimpleOnGestureListener() {
-            private boolean mProcessingDoubleTapEvent = false;
+            private boolean mProcessingShiftDoubleTapEvent = false;
 
             @Override
             public boolean onFling(MotionEvent me1, MotionEvent me2, float velocityX,
@@ -424,25 +424,39 @@
             }
 
             @Override
-            public boolean onDoubleTap(MotionEvent e) {
+            public boolean onDoubleTap(MotionEvent firstDown) {
                 if (ENABLE_CAPSLOCK_BY_DOUBLETAP && mKeyboard instanceof LatinKeyboard
                         && ((LatinKeyboard) mKeyboard).isAlphaKeyboard()) {
-                    final int pointerIndex = e.getActionIndex();
-                    final int id = e.getPointerId(pointerIndex);
+                    final int pointerIndex = firstDown.getActionIndex();
+                    final int id = firstDown.getPointerId(pointerIndex);
                     final PointerTracker tracker = getPointerTracker(id);
-                    if (tracker.isOnShiftKey((int)e.getX(), (int)e.getY())) {
-                        onDoubleTapShiftKey(tracker);
-                        mProcessingDoubleTapEvent = true;
+                    // If the first down event is on shift key.
+                    if (tracker.isOnShiftKey((int)firstDown.getX(), (int)firstDown.getY())) {
+                        mProcessingShiftDoubleTapEvent = true;
                         return true;
                     }
                 }
-                mProcessingDoubleTapEvent = false;
+                mProcessingShiftDoubleTapEvent = false;
                 return false;
             }
 
             @Override
-            public boolean onDoubleTapEvent(MotionEvent e) {
-                return mProcessingDoubleTapEvent;
+            public boolean onDoubleTapEvent(MotionEvent secondTap) {
+                if (mProcessingShiftDoubleTapEvent
+                        && secondTap.getAction() == MotionEvent.ACTION_DOWN) {
+                    final MotionEvent secondDown = secondTap;
+                    final int pointerIndex = secondDown.getActionIndex();
+                    final int id = secondDown.getPointerId(pointerIndex);
+                    final PointerTracker tracker = getPointerTracker(id);
+                    // If the second down event is also on shift key.
+                    if (tracker.isOnShiftKey((int)secondDown.getX(), (int)secondDown.getY())) {
+                        onDoubleTapShiftKey(tracker);
+                        return true;
+                    }
+                    // Otherwise these events should not be handled as double tap.
+                    mProcessingShiftDoubleTapEvent = false;
+                }
+                return mProcessingShiftDoubleTapEvent;
             }
         };
 
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 888375b..1977f5f 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -315,11 +315,7 @@
         int x = pointX;
         int y = pointY;
         final int code = key.mCode;
-        if (code == CODE_SHIFT || code == CODE_DELETE) {
-            y -= key.mHeight / 10;
-            if (code == CODE_SHIFT) x += key.mWidth / 6;
-            if (code == CODE_DELETE) x -= key.mWidth / 6;
-        } else if (code == CODE_SPACE) {
+        if (code == CODE_SPACE) {
             y += LatinKeyboard.sSpacebarVerticalCorrection;
             if (SubtypeSwitcher.getInstance().useSpacebarLanguageSwitcher()
                     && SubtypeSwitcher.getInstance().getEnabledKeyboardLocaleCount() > 1) {