diff options
author | 2011-05-31 07:13:45 -0700 | |
---|---|---|
committer | 2011-05-31 07:13:45 -0700 | |
commit | 84f414f44ffcfd5bc9f4010ead97300bf63e2ecc (patch) | |
tree | 32f6c0626bd099c2dcf0908b51da619d8cbda408 /java/src/com/android | |
parent | b4d7fc12a4463917329e6bf432098e697d0bebda (diff) | |
parent | 528be97fca75513b81575ef64e4af6898656f5fb (diff) | |
download | latinime-84f414f44ffcfd5bc9f4010ead97300bf63e2ecc.tar.gz latinime-84f414f44ffcfd5bc9f4010ead97300bf63e2ecc.tar.xz latinime-84f414f44ffcfd5bc9f4010ead97300bf63e2ecc.zip |
am 528be97f: Fix mini keyboard position
* commit '528be97fca75513b81575ef64e4af6898656f5fb':
Fix mini keyboard position
Diffstat (limited to 'java/src/com/android')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/KeyboardView.java | 28 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/MiniKeyboard.java | 16 |
2 files changed, 23 insertions, 21 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index e33e76251..5736b1ef7 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -52,7 +52,6 @@ import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.WeakHashMap; /** @@ -1117,19 +1116,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { return container; } - private static boolean isOneRowKeys(List<Key> keys) { - if (keys.size() == 0) return false; - final int edgeFlags = keys.get(0).mEdgeFlags; - // HACK: The first key of mini keyboard which was inflated from xml and has multiple rows, - // does not have both top and bottom edge flags on at the same time. On the other hand, - // the first key of mini keyboard that was created with popupCharacters must have both top - // and bottom edge flags on. - // When you want to use one row mini-keyboard from xml file, make sure that the row has - // both top and bottom edge flags set. - return (edgeFlags & Keyboard.EDGE_TOP) != 0 - && (edgeFlags & Keyboard.EDGE_BOTTOM) != 0; - } - /** * Called when a key is long pressed. By default this will open any popup keyboard associated * with this key through the attributes popupLayout and popupCharacters. @@ -1155,14 +1141,14 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { } final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : popupKey.mX + popupKey.mWidth / 2; - final int popupX = pointX - miniKeyboard.getDefaultCoordX() - - container.getPaddingLeft() - + getPaddingLeft() + mWindowOffset[0]; - final int popupY = popupKey.mY - mKeyboard.getVerticalGap() - - (container.getMeasuredHeight() - container.getPaddingBottom()) - + getPaddingTop() + mWindowOffset[1]; + final int keyboardLeft = pointX - miniKeyboard.getDefaultCoordX() + getPaddingLeft(); + final int popupX = Math.max(0, Math.min(keyboardLeft, + mMiniKeyboardParent.getWidth() - miniKeyboard.getMinWidth())) + - container.getPaddingLeft() + mWindowOffset[0]; + final int popupY = popupKey.mY - mKeyboard.getVerticalGap() + getPaddingTop() + - (container.getMeasuredHeight() - container.getPaddingBottom()) + mWindowOffset[1]; final int x = popupX; - final int y = mShowPreview && isOneRowKeys(miniKeyboard.getKeys()) + final int y = mShowPreview && miniKeyboard.isOneRowKeys() ? mPopupPreviewDisplayedY : popupY; mMiniKeyboardOriginX = x + container.getPaddingLeft() - mWindowOffset[0]; diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java index a45aaa4c6..8d243e0a7 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java @@ -18,6 +18,8 @@ package com.android.inputmethod.keyboard; import android.content.Context; +import java.util.List; + public class MiniKeyboard extends Keyboard { private int mDefaultKeyCoordX; @@ -32,4 +34,18 @@ public class MiniKeyboard extends Keyboard { public int getDefaultCoordX() { return mDefaultKeyCoordX; } + + public boolean isOneRowKeys() { + final List<Key> keys = getKeys(); + if (keys.size() == 0) return false; + final int edgeFlags = keys.get(0).mEdgeFlags; + // HACK: The first key of mini keyboard which was inflated from xml and has multiple rows, + // does not have both top and bottom edge flags on at the same time. On the other hand, + // the first key of mini keyboard that was created with popupCharacters must have both top + // and bottom edge flags on. + // When you want to use one row mini-keyboard from xml file, make sure that the row has + // both top and bottom edge flags set. + return (edgeFlags & Keyboard.EDGE_TOP) != 0 + && (edgeFlags & Keyboard.EDGE_BOTTOM) != 0; + } } |