Preventing infinite call of dismissMoreKeysPanel

Bug: 5514583

Change-Id: Idf8dd1ebba0afdb768e538c2626b60770421d4be
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
index 0e6e129..f2c5b7b 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
@@ -27,7 +27,6 @@
 import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
 import com.android.inputmethod.latin.R;
 
-
 /**
  * A view that renders a virtual {@link MiniKeyboard}. It handles rendering of keys and detecting
  * key presses and touch movements.
@@ -115,7 +114,7 @@
 
     @Override
     public DrawingProxy getDrawingProxy() {
-        return  this;
+        return this;
     }
 
     @Override
@@ -174,9 +173,15 @@
         return x;
     }
 
+    private boolean mIsDismissing;
+
     @Override
     public boolean dismissMoreKeysPanel() {
-        return mController.dismissMoreKeysPanel();
+        if (mIsDismissing) return false;
+        mIsDismissing = true;
+        final boolean dismissed = mController.dismissMoreKeysPanel();
+        mIsDismissing = false;
+        return dismissed;
     }
 
     @Override
diff --git a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
index 51f6c04..c61dd63 100644
--- a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
@@ -35,7 +35,6 @@
 import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler;
 import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
 
-
 /**
  * A view that renders a virtual {@link MoreSuggestions}. It handles rendering of keys and detecting
  * key presses and touch movements.
@@ -125,7 +124,7 @@
 
     @Override
     public DrawingProxy getDrawingProxy() {
-        return  this;
+        return this;
     }
 
     @Override
@@ -180,10 +179,15 @@
         return x;
     }
 
+    private boolean mIsDismissing;
+
     @Override
     public boolean dismissMoreKeysPanel() {
-        if (mController == null) return false;
-        return mController.dismissMoreKeysPanel();
+        if (mIsDismissing) return false;
+        mIsDismissing = true;
+        final boolean dismissed = mController.dismissMoreKeysPanel();
+        mIsDismissing = false;
+        return dismissed;
     }
 
     @Override