Merge "Create ver4 dictionary files with the dictionary name."
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index e8a8971..1400e05 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -1008,6 +1008,12 @@
         final int index = me.getActionIndex();
         final int id = me.getPointerId(index);
         final PointerTracker tracker = PointerTracker.getPointerTracker(id);
+        // When a more keys panel is showing, we should ignore other fingers' single touch events
+        // other than the finger that is showing the more keys panel.
+        if (isShowingMoreKeysPanel() && !tracker.isShowingMoreKeysPanel()
+                && PointerTracker.getActivePointerTrackerCount() == 1) {
+            return true;
+        }
         tracker.processMotionEvent(me, mKeyDetector);
         return true;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index ae6aee4..f9e78bf 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -715,7 +715,7 @@
         return newKey;
     }
 
-    private static int getActivePointerTrackerCount() {
+    /* package */ static int getActivePointerTrackerCount() {
         return sPointerTrackerQueue.size();
     }
 
@@ -827,12 +827,19 @@
         final int action = me.getActionMasked();
         final long eventTime = me.getEventTime();
         if (action == MotionEvent.ACTION_MOVE) {
+            // When this pointer is the only active pointer and is showing a more keys panel,
+            // we should ignore other pointers' motion event.
+            final boolean shouldIgnoreOtherPointers =
+                    isShowingMoreKeysPanel() && getActivePointerTrackerCount() == 1;
             final int pointerCount = me.getPointerCount();
             for (int index = 0; index < pointerCount; index++) {
                 final int id = me.getPointerId(index);
-                final PointerTracker tracker = getPointerTracker(id);
+                if (shouldIgnoreOtherPointers && id != mPointerId) {
+                    continue;
+                }
                 final int x = (int)me.getX(index);
                 final int y = (int)me.getY(index);
+                final PointerTracker tracker = getPointerTracker(id);
                 tracker.onMoveEvent(x, y, eventTime, me);
             }
             return;
@@ -903,7 +910,7 @@
         }
     }
 
-    private boolean isShowingMoreKeysPanel() {
+    /* package */ boolean isShowingMoreKeysPanel() {
         return (mMoreKeysPanel != null);
     }