diff options
author | 2010-10-10 12:47:23 -0700 | |
---|---|---|
committer | 2010-10-10 12:47:23 -0700 | |
commit | fd64e47c2b00a6ac7eb73a6a6601d9248bad6b84 (patch) | |
tree | 2b0d31d2c9dd3a26cc5e69e414288bcf650d7e67 /java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java | |
parent | 938c0a3722a9c597931e6f75408dc7ab636d7052 (diff) | |
parent | c2d7ac79bdadb4335ed69a4e9631e0ec2e3058f6 (diff) | |
download | latinime-fd64e47c2b00a6ac7eb73a6a6601d9248bad6b84.tar.gz latinime-fd64e47c2b00a6ac7eb73a6a6601d9248bad6b84.tar.xz latinime-fd64e47c2b00a6ac7eb73a6a6601d9248bad6b84.zip |
am c2d7ac79: Tweak key width for \'o\'-popup chars.
Merge commit 'c2d7ac79bdadb4335ed69a4e9631e0ec2e3058f6' into gingerbread-plus-aosp
* commit 'c2d7ac79bdadb4335ed69a4e9631e0ec2e3058f6':
Tweak key width for 'o'-popup chars.
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java index f96a3599d..0989dbdd3 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java @@ -1087,8 +1087,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx return container; } - private static boolean isOneRowKeyboard(Keyboard keyboard) { - final List<Key> keys = keyboard.getKeys(); + private static boolean isOneRowKeys(List<Key> keys) { if (keys.size() == 0) return false; final int edgeFlags = keys.get(0).edgeFlags; // HACK: The first key of mini keyboard which was inflated from xml and has multiple rows, @@ -1125,24 +1124,35 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx getLocationInWindow(mWindowOffset); } + // Get width of a key in the mini popup keyboard = "miniKeyWidth". + // On the other hand, "popupKey.width" is width of the pressed key on the main keyboard. + // We adjust the position of mini popup keyboard with the edge key in it: + // a) When we have the leftmost key in popup keyboard directly above the pressed key + // Right edges of both keys should be aligned for consistent default selection + // b) When we have the rightmost key in popup keyboard directly above the pressed key + // Left edges of both keys should be aligned for consistent default selection + final List<Key> miniKeys = mMiniKeyboard.getKeyboard().getKeys(); + final int miniKeyWidth = miniKeys.size() > 0 ? miniKeys.get(0).width : 0; + // HACK: Have the leftmost number in the popup characters right above the key boolean isNumberAtLeftmost = hasMultiplePopupChars(popupKey) && isNumberAtLeftmostPopupChar(popupKey); int popupX = popupKey.x + mWindowOffset[0]; - int popupY = popupKey.y + mWindowOffset[1]; + popupX += getPaddingLeft(); if (isNumberAtLeftmost) { + popupX += popupKey.width - miniKeyWidth; // adjustment for a) described above popupX -= container.getPaddingLeft(); } else { - popupX += popupKey.width + getPaddingLeft(); + popupX += miniKeyWidth; // adjustment for b) described above popupX -= container.getMeasuredWidth(); popupX += container.getPaddingRight(); } + int popupY = popupKey.y + mWindowOffset[1]; popupY += getPaddingTop(); popupY -= container.getMeasuredHeight(); popupY += container.getPaddingBottom(); final int x = popupX; - final int y = mShowPreview && isOneRowKeyboard(mMiniKeyboard.getKeyboard()) - ? mPopupPreviewDisplayedY : popupY; + final int y = mShowPreview && isOneRowKeys(miniKeys) ? mPopupPreviewDisplayedY : popupY; int adjustedX = x; if (x < 0) { |