From d144b7874efc843bccc3ec7cd9a48d32d8f2395d Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Mon, 22 Sep 2014 15:30:29 +0900
Subject: [PATCH] Fix not intercepting touch event while in modal mode

Bug: 17600156
Change-Id: Ife8f04550411d88311e08dd33e370a410d791ca2
---
 .../latin/suggestions/MoreSuggestionsView.java         | 10 +++++++++-
 .../latin/suggestions/SuggestionStripView.java         |  5 ++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index f7b6f919dd..907e3fa42d 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -40,6 +40,8 @@ public final class MoreSuggestionsView extends MoreKeysKeyboardView {
         public abstract void onSuggestionSelected(final SuggestedWordInfo info);
     }
 
+    private boolean mIsInModalMode;
+
     public MoreSuggestionsView(final Context context, final AttributeSet attrs) {
         this(context, attrs, R.attr.moreKeysKeyboardViewStyle);
     }
@@ -53,6 +55,7 @@ public final class MoreSuggestionsView extends MoreKeysKeyboardView {
     @Override
     public void setKeyboard(final Keyboard keyboard) {
         super.setKeyboard(keyboard);
+        mIsInModalMode = false;
         // With accessibility mode off, {@link #mAccessibilityDelegate} is set to null at the
         // above {@link MoreKeysKeyboardView#setKeyboard(Keyboard)} call.
         // With accessibility mode on, {@link #mAccessibilityDelegate} is set to a
@@ -74,12 +77,17 @@ public final class MoreSuggestionsView extends MoreKeysKeyboardView {
         updateKeyDrawParams(keyHeight);
     }
 
-    public void adjustVerticalCorrectionForModalMode() {
+    public void setModalMode() {
+        mIsInModalMode = true;
         // Set vertical correction to zero (Reset more keys keyboard sliding allowance
         // {@link R#dimen.config_more_keys_keyboard_slide_allowance}).
         mKeyDetector.setKeyboard(getKeyboard(), -getPaddingLeft(), -getPaddingTop());
     }
 
+    public boolean isInModalMode() {
+        return mIsInModalMode;
+    }
+
     @Override
     protected void onKeyInput(final Key key, final int x, final int y) {
         if (!(key instanceof MoreSuggestionKey)) {
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index 33745a8468..04264e6644 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -393,6 +393,9 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
 
     @Override
     public boolean onInterceptTouchEvent(final MotionEvent me) {
+        if (mMoreSuggestionsView.isInModalMode()) {
+            return false;
+        }
         if (!mMoreSuggestionsView.isShowingInParent()) {
             mLastX = (int)me.getX();
             mLastY = (int)me.getY();
@@ -416,7 +419,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
 
         if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
             // Decided to be in the modal input mode.
-            mMoreSuggestionsView.adjustVerticalCorrectionForModalMode();
+            mMoreSuggestionsView.setModalMode();
         }
         return false;
     }
-- 
GitLab