aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java18
-rw-r--r--java/src/com/android/inputmethod/latin/MoreSuggestionsView.java24
2 files changed, 34 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 00cd74b19..b467a32a2 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1875,14 +1875,16 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
return;
}
- final boolean selectedATypedWordAndItsInUserUnigramDic =
- !selectedANotTypedWord && mUserUnigramDictionary.isValidWord(suggestion);
- final boolean isValidWord = AutoCorrection.isValidWord(
- mSuggest.getUnigramDictionaries(), suggestion, true);
- final boolean needsToAddToUserUnigramDictionary = selectedATypedWordAndItsInUserUnigramDic
- || !isValidWord;
- if (needsToAddToUserUnigramDictionary) {
- mUserUnigramDictionary.addWord(suggestion.toString(), frequencyDelta);
+ if (null != mSuggest && null != mUserUnigramDictionary) {
+ final boolean selectedATypedWordAndItsInUserUnigramDic =
+ !selectedANotTypedWord && mUserUnigramDictionary.isValidWord(suggestion);
+ final boolean isValidWord = AutoCorrection.isValidWord(
+ mSuggest.getUnigramDictionaries(), suggestion, true);
+ final boolean needsToAddToUserUnigramDictionary =
+ selectedATypedWordAndItsInUserUnigramDic || !isValidWord;
+ if (needsToAddToUserUnigramDictionary) {
+ mUserUnigramDictionary.addWord(suggestion.toString(), frequencyDelta);
+ }
}
if (mUserBigramDictionary != null) {
diff --git a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
index a5ff5330e..695e60ffd 100644
--- a/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/MoreSuggestionsView.java
@@ -145,6 +145,13 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
// Nothing to do with.
}
+ private final View.OnTouchListener mMotionEventDelegate = new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View view, MotionEvent me) {
+ return MoreSuggestionsView.this.dispatchTouchEvent(me);
+ }
+ };
+
@Override
public void showMoreKeysPanel(View parentView, Controller controller, int pointX, int pointY,
PopupWindow window, KeyboardActionListener listener) {
@@ -163,6 +170,10 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
- (container.getMeasuredHeight() - container.getPaddingBottom())
+ parentView.getPaddingTop() + mCoordinates[1];
+ container.setOnTouchListener(mMotionEventDelegate);
+ window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
+ window.setFocusable(true);
+ window.setOutsideTouchable(true);
window.setContentView(container);
window.setWidth(container.getMeasuredWidth());
window.setHeight(container.getMeasuredHeight());
@@ -218,6 +229,19 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
};
@Override
+ public boolean dispatchTouchEvent(MotionEvent me) {
+ final int x = (int)me.getX();
+ final int y = (int)me.getY();
+ final boolean inside = (x >= 0 && x < getWidth() && y >= 0 && y < getHeight());
+ if (inside) {
+ return super.dispatchTouchEvent(me);
+ } else {
+ dismissMoreKeysPanel();
+ return true;
+ }
+ }
+
+ @Override
public boolean onTouchEvent(MotionEvent me) {
final int action = me.getAction();
final long eventTime = me.getEventTime();