Merge "Fix keypress vibration duration of HTC One X"
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 5a2af80..a832728 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -1168,6 +1168,7 @@
 
     private void onUpEventInternal(final int x, final int y, final long eventTime) {
         mTimerProxy.cancelKeyTimers();
+        final boolean isInSlidingKeyInput = mIsInSlidingKeyInput;
         resetSlidingKeyInput();
         mIsDetectingGesture = false;
         final Key currentKey = mCurrentKey;
@@ -1197,9 +1198,11 @@
         if (mIsTrackingForActionDisabled) {
             return;
         }
-        if (currentKey != null && !currentKey.isRepeatable()) {
-            detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
+        if (currentKey != null && currentKey.isRepeatable() && !isInSlidingKeyInput) {
+            // Repeatable key has been registered in {@link #onDownEventInternal(int,int,long)}.
+            return;
         }
+        detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime);
     }
 
     public void onShowMoreKeysPanel(final int translatedX, final int translatedY,
@@ -1251,7 +1254,7 @@
         if (key == null) return;
         if (!key.isRepeatable()) return;
         // Don't start key repeat when we are in sliding input mode.
-        if (mIsInSlidingKeyInputFromModifier) return;
+        if (mIsInSlidingKeyInput) return;
         onRegisterKey(key);
         mTimerProxy.startKeyRepeatTimer(this);
     }
@@ -1313,7 +1316,7 @@
         // doesn't have its more keys. (e.g. spacebar, globe key)
         // We always need to start the long press timer if the key has its more keys regardless of
         // whether or not we are in the sliding input mode.
-        if (mIsInSlidingKeyInputFromModifier && key.mMoreKeys == null) return;
+        if (mIsInSlidingKeyInput && key.mMoreKeys == null) return;
         mTimerProxy.startLongPressTimer(this);
     }