From bbf25cf25169f640a361370cde5521ffc7789a1b Mon Sep 17 00:00:00 2001
From: Ken Wakasa <kwakasa@google.com>
Date: Mon, 8 Aug 2011 20:33:44 +0900
Subject: [PATCH] Fix issues with long-press access to more suggestions

Change-Id: If5a45dcae7f7e7881d305104e35a04c341719aec
---
 .../android/inputmethod/latin/CandidateView.java | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index 1cf093c672..d779c85656 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -387,7 +387,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
 
             final int countInStrip = mCandidateCountInStrip;
             setupTexts(suggestions, countInStrip);
-
+            mMoreSuggestionsAvailable = (suggestions.size() > countInStrip);
             int x = 0;
             for (int index = 0; index < countInStrip; index++) {
                 final int pos = getWordPosition(index, suggestions);
@@ -400,14 +400,12 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
 
                 final CharSequence styled = mTexts.get(pos);
                 final TextView word = mWords.get(pos);
-                if (index == mCenterCandidateIndex && suggestions.size() > countInStrip) {
+                if (index == mCenterCandidateIndex && mMoreSuggestionsAvailable) {
                     // TODO: This "more suggestions hint" should have nicely designed icon.
                     word.setCompoundDrawablesWithIntrinsicBounds(
                             null, null, null, mMoreCandidateHint);
-                    mMoreSuggestionsAvailable = true;
                 } else {
                     word.setCompoundDrawables(null, null, null, null);
-                    mMoreSuggestionsAvailable = false;
                 }
 
                 // Disable this candidate if the suggestion is null or empty.
@@ -693,6 +691,14 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
         mKeyboardView.setVisibility(VISIBLE);
     }
 
+    private void toggleCandidatesPane() {
+        if (mCandidatesPaneContainer.getVisibility() == VISIBLE) {
+            closeCandidatesPane();
+        } else {
+            expandCandidatesPane();
+        }
+    }
+
     public void onAutoCorrectionInverted(CharSequence autoCorrectedWord) {
         final CharSequence inverted = mStripParams.getInvertedText(autoCorrectedWord);
         if (inverted == null)
@@ -770,7 +776,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
     @Override
     public boolean onLongClick(View view) {
         if (mStripParams.mMoreSuggestionsAvailable) {
-            expandCandidatesPane();
+            toggleCandidatesPane();
             return true;
         }
         return false;
-- 
GitLab