diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java
index 0e6e129bb0e89e5485498de5504d7c8af4e20f2e..f2c5b7b49a743fd29f4f674a7eb114fd96fdee44 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.DrawingProxy;
 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 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel {
 
     @Override
     public DrawingProxy getDrawingProxy() {
-        return  this;
+        return this;
     }
 
     @Override
@@ -174,9 +173,15 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel {
         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 51f6c040d0a07e7ca8c06db6d7383d18a3a67922..c61dd63134f0acc38bc718b941926e8fc6cb1f09 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.DrawingProxy;
 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 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
 
     @Override
     public DrawingProxy getDrawingProxy() {
-        return  this;
+        return this;
     }
 
     @Override
@@ -180,10 +179,15 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
         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