diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index a4fccb2a23e604f14b8a27f80ac68a7d55a481f4..1c84cb9476e40ee27adc67a75b1a2e68d1a9a4aa 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -669,7 +669,7 @@ public class PointerTracker {
         if (queue != null && queue.size() == 1) {
             mIsPossibleGesture = false;
             // A gesture should start only from the letter key.
-            if (sIsGestureEnabled && mIsAlphabetKeyboard && key != null
+            if (sIsGestureEnabled && mIsAlphabetKeyboard && !mIsShowingMoreKeysPanel && key != null
                     && Keyboard.isLetterCode(key.mCode)) {
                 mIsPossibleGesture = true;
                 // TODO: pointer times should be relative to first down even in entire batch input
@@ -913,8 +913,8 @@ public class PointerTracker {
     public void onShowMoreKeysPanel(int x, int y, KeyEventHandler handler) {
         abortBatchInput();
         onLongPressed();
-        onDownEvent(x, y, SystemClock.uptimeMillis(), handler);
         mIsShowingMoreKeysPanel = true;
+        onDownEvent(x, y, SystemClock.uptimeMillis(), handler);
     }
 
     public void onLongPressed() {