aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-05-31 07:13:45 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-05-31 07:13:45 -0700
commit84f414f44ffcfd5bc9f4010ead97300bf63e2ecc (patch)
tree32f6c0626bd099c2dcf0908b51da619d8cbda408 /java/src/com
parentb4d7fc12a4463917329e6bf432098e697d0bebda (diff)
parent528be97fca75513b81575ef64e4af6898656f5fb (diff)
downloadlatinime-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')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java28
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboard.java16
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;
+ }
}