Loading java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +10 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke private int mOldPointerCount = 1; private int mOldKeyIndex; private final boolean mConfigShowMiniKeyboardAtTouchedPoint; protected KeyDetector mKeyDetector; // To detect double tap. Loading Loading @@ -225,6 +226,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke a.recycle(); final Resources res = getResources(); mConfigShowMiniKeyboardAtTouchedPoint = res.getBoolean( R.bool.config_show_mini_keyboard_at_touched_point); final float keyHysteresisDistance = res.getDimension(R.dimen.key_hysteresis_distance); mKeyDetector = new KeyDetector(keyHysteresisDistance); Loading Loading @@ -459,7 +462,13 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mPopupPanel = popupPanel; mPopupPanelPointerTrackerId = tracker.mPointerId; popupPanel.showPopupPanel(this, parentKey, tracker, mPopupWindow); final Keyboard keyboard = getKeyboard(); mPopupPanel.setShifted(keyboard.isShiftedOrShiftLocked()); final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : parentKey.mX + parentKey.mWidth / 2; final int pointY = parentKey.mY - keyboard.mVerticalGap; popupPanel.showPopupPanel( this, this, pointX, pointY, mPopupWindow, getKeyboardActionListener()); final int translatedX = popupPanel.translateX(tracker.getLastX()); final int translatedY = popupPanel.translateY(tracker.getLastY()); tracker.onShowPopupPanel(translatedX, translatedY, SystemClock.uptimeMillis(), popupPanel); Loading java/src/com/android/inputmethod/keyboard/PointerTracker.java +1 −2 Original line number Diff line number Diff line Loading @@ -63,13 +63,12 @@ public class PointerTracker { public TimerProxy getTimerProxy(); } public interface DrawingProxy { public interface DrawingProxy extends PopupPanel.Controller { public void invalidateKey(Key key); public TextView inflateKeyPreviewText(); public void showKeyPreview(int keyIndex, PointerTracker tracker); public void cancelShowKeyPreview(PointerTracker tracker); public void dismissKeyPreview(PointerTracker tracker); public boolean dismissPopupPanel(); } public interface TimerProxy { Loading java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java +29 −30 Original line number Diff line number Diff line Loading @@ -36,12 +36,12 @@ import java.util.List; */ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { private final int[] mCoordinates = new int[2]; private final boolean mConfigShowMiniKeyboardAtTouchedPoint; private final KeyDetector mKeyDetector; private final int mVerticalCorrection; private LatinKeyboardView mParentKeyboardView; private Controller mController; private KeyboardActionListener mListener; private int mOriginX; private int mOriginY; Loading Loading @@ -101,30 +101,29 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { public void cancelKeyTimers() {} }; private final KeyboardActionListener mListner = new KeyboardActionListener() { private final KeyboardActionListener mMiniKeyboardListener = new KeyboardActionListener() { @Override public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) { mParentKeyboardView.getKeyboardActionListener() .onCodeInput(primaryCode, keyCodes, x, y); mListener.onCodeInput(primaryCode, keyCodes, x, y); } @Override public void onTextInput(CharSequence text) { mParentKeyboardView.getKeyboardActionListener().onTextInput(text); mListener.onTextInput(text); } @Override public void onCancelInput() { mParentKeyboardView.getKeyboardActionListener().onCancelInput(); mListener.onCancelInput(); } @Override public void onPress(int primaryCode, boolean withSliding) { mParentKeyboardView.getKeyboardActionListener().onPress(primaryCode, withSliding); mListener.onPress(primaryCode, withSliding); } @Override public void onRelease(int primaryCode, boolean withSliding) { mParentKeyboardView.getKeyboardActionListener().onRelease(primaryCode, withSliding); mListener.onRelease(primaryCode, withSliding); } @Override public boolean onCustomRequest(int requestCode) { return false; } Loading @@ -144,8 +143,6 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { a.recycle(); final Resources res = context.getResources(); mConfigShowMiniKeyboardAtTouchedPoint = res.getBoolean( R.bool.config_show_mini_keyboard_at_touched_point); // Override default ProximityKeyDetector. mKeyDetector = new MiniKeyboardKeyDetector(res.getDimension( R.dimen.mini_keyboard_slide_allowance)); Loading Loading @@ -179,7 +176,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { @Override public KeyboardActionListener getKeyboardActionListener() { return mListner; return mMiniKeyboardListener; } @Override Loading @@ -200,34 +197,36 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { } @Override public void showPopupPanel(LatinKeyboardView parentKeyboardView, Key parentKey, PointerTracker tracker, PopupWindow window) { mParentKeyboardView = parentKeyboardView; public void setShifted(boolean shifted) { final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); if (miniKeyboard.setShifted(shifted)) { invalidateAllKeys(); } } @Override public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, PopupWindow window, KeyboardActionListener listener) { mController = controller; mListener = listener; final View container = (View)getParent(); final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); final Keyboard parentKeyboard = parentKeyboardView.getKeyboard(); parentKeyboardView.getLocationInWindow(mCoordinates); final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : parentKey.mX + parentKey.mWidth / 2; final int pointY = parentKey.mY; parentView.getLocationInWindow(mCoordinates); final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX() + parentKeyboardView.getPaddingLeft(); + parentView.getPaddingLeft(); final int x = wrapUp(Math.max(0, Math.min(miniKeyboardLeft, parentKeyboardView.getWidth() - miniKeyboard.mOccupiedWidth)) parentView.getWidth() - miniKeyboard.mOccupiedWidth)) - container.getPaddingLeft() + mCoordinates[0], container.getMeasuredWidth(), 0, parentKeyboardView.getWidth()); final int y = pointY - parentKeyboard.mVerticalGap container.getMeasuredWidth(), 0, parentView.getWidth()); final int y = pointY - (container.getMeasuredHeight() - container.getPaddingBottom()) + parentKeyboardView.getPaddingTop() + mCoordinates[1]; + parentView.getPaddingTop() + mCoordinates[1]; if (miniKeyboard.setShifted(parentKeyboard.isShiftedOrShiftLocked())) { invalidateAllKeys(); } window.setContentView(container); window.setWidth(container.getMeasuredWidth()); window.setHeight(container.getMeasuredHeight()); window.showAtLocation(parentKeyboardView, Gravity.NO_GRAVITY, x, y); window.showAtLocation(parentView, Gravity.NO_GRAVITY, x, y); mOriginX = x + container.getPaddingLeft() - mCoordinates[0]; mOriginY = y + container.getPaddingTop() - mCoordinates[1]; Loading @@ -243,7 +242,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { @Override public boolean dismissPopupPanel() { return mParentKeyboardView.dismissPopupPanel(); return mController.dismissPopupPanel(); } @Override Loading java/src/com/android/inputmethod/keyboard/PopupPanel.java +14 −5 Original line number Diff line number Diff line Loading @@ -16,18 +16,27 @@ package com.android.inputmethod.keyboard; import android.view.View; import android.widget.PopupWindow; public interface PopupPanel extends PointerTracker.KeyEventHandler { public interface Controller { public boolean dismissPopupPanel(); } public void setShifted(boolean shifted); /** * Show popup panel. * @param parentKeyboardView the parent KeyboardView that has the parent key. * @param parentKey the parent key that is the source of this popup panel * @param tracker the pointer tracker that pressesd the parent key * @param parentView the parent view of this popup panel * @param controller the controller that can dismiss this popup panel * @param pointX x coordinate of this popup panel * @param pointY y coordinate of this popup panel * @param window PopupWindow to be used to show this popup panel * @param listener the listener that will receive keyboard action from this popup panel. */ public void showPopupPanel(LatinKeyboardView parentKeyboardView, Key parentKey, PointerTracker tracker, PopupWindow window); public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, PopupWindow window, KeyboardActionListener listener); /** * Translate X-coordinate of touch event to the local X-coordinate of this PopupPanel. Loading Loading
java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +10 −1 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke private int mOldPointerCount = 1; private int mOldKeyIndex; private final boolean mConfigShowMiniKeyboardAtTouchedPoint; protected KeyDetector mKeyDetector; // To detect double tap. Loading Loading @@ -225,6 +226,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke a.recycle(); final Resources res = getResources(); mConfigShowMiniKeyboardAtTouchedPoint = res.getBoolean( R.bool.config_show_mini_keyboard_at_touched_point); final float keyHysteresisDistance = res.getDimension(R.dimen.key_hysteresis_distance); mKeyDetector = new KeyDetector(keyHysteresisDistance); Loading Loading @@ -459,7 +462,13 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mPopupPanel = popupPanel; mPopupPanelPointerTrackerId = tracker.mPointerId; popupPanel.showPopupPanel(this, parentKey, tracker, mPopupWindow); final Keyboard keyboard = getKeyboard(); mPopupPanel.setShifted(keyboard.isShiftedOrShiftLocked()); final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : parentKey.mX + parentKey.mWidth / 2; final int pointY = parentKey.mY - keyboard.mVerticalGap; popupPanel.showPopupPanel( this, this, pointX, pointY, mPopupWindow, getKeyboardActionListener()); final int translatedX = popupPanel.translateX(tracker.getLastX()); final int translatedY = popupPanel.translateY(tracker.getLastY()); tracker.onShowPopupPanel(translatedX, translatedY, SystemClock.uptimeMillis(), popupPanel); Loading
java/src/com/android/inputmethod/keyboard/PointerTracker.java +1 −2 Original line number Diff line number Diff line Loading @@ -63,13 +63,12 @@ public class PointerTracker { public TimerProxy getTimerProxy(); } public interface DrawingProxy { public interface DrawingProxy extends PopupPanel.Controller { public void invalidateKey(Key key); public TextView inflateKeyPreviewText(); public void showKeyPreview(int keyIndex, PointerTracker tracker); public void cancelShowKeyPreview(PointerTracker tracker); public void dismissKeyPreview(PointerTracker tracker); public boolean dismissPopupPanel(); } public interface TimerProxy { Loading
java/src/com/android/inputmethod/keyboard/PopupMiniKeyboardView.java +29 −30 Original line number Diff line number Diff line Loading @@ -36,12 +36,12 @@ import java.util.List; */ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { private final int[] mCoordinates = new int[2]; private final boolean mConfigShowMiniKeyboardAtTouchedPoint; private final KeyDetector mKeyDetector; private final int mVerticalCorrection; private LatinKeyboardView mParentKeyboardView; private Controller mController; private KeyboardActionListener mListener; private int mOriginX; private int mOriginY; Loading Loading @@ -101,30 +101,29 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { public void cancelKeyTimers() {} }; private final KeyboardActionListener mListner = new KeyboardActionListener() { private final KeyboardActionListener mMiniKeyboardListener = new KeyboardActionListener() { @Override public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) { mParentKeyboardView.getKeyboardActionListener() .onCodeInput(primaryCode, keyCodes, x, y); mListener.onCodeInput(primaryCode, keyCodes, x, y); } @Override public void onTextInput(CharSequence text) { mParentKeyboardView.getKeyboardActionListener().onTextInput(text); mListener.onTextInput(text); } @Override public void onCancelInput() { mParentKeyboardView.getKeyboardActionListener().onCancelInput(); mListener.onCancelInput(); } @Override public void onPress(int primaryCode, boolean withSliding) { mParentKeyboardView.getKeyboardActionListener().onPress(primaryCode, withSliding); mListener.onPress(primaryCode, withSliding); } @Override public void onRelease(int primaryCode, boolean withSliding) { mParentKeyboardView.getKeyboardActionListener().onRelease(primaryCode, withSliding); mListener.onRelease(primaryCode, withSliding); } @Override public boolean onCustomRequest(int requestCode) { return false; } Loading @@ -144,8 +143,6 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { a.recycle(); final Resources res = context.getResources(); mConfigShowMiniKeyboardAtTouchedPoint = res.getBoolean( R.bool.config_show_mini_keyboard_at_touched_point); // Override default ProximityKeyDetector. mKeyDetector = new MiniKeyboardKeyDetector(res.getDimension( R.dimen.mini_keyboard_slide_allowance)); Loading Loading @@ -179,7 +176,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { @Override public KeyboardActionListener getKeyboardActionListener() { return mListner; return mMiniKeyboardListener; } @Override Loading @@ -200,34 +197,36 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { } @Override public void showPopupPanel(LatinKeyboardView parentKeyboardView, Key parentKey, PointerTracker tracker, PopupWindow window) { mParentKeyboardView = parentKeyboardView; public void setShifted(boolean shifted) { final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); if (miniKeyboard.setShifted(shifted)) { invalidateAllKeys(); } } @Override public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, PopupWindow window, KeyboardActionListener listener) { mController = controller; mListener = listener; final View container = (View)getParent(); final MiniKeyboard miniKeyboard = (MiniKeyboard)getKeyboard(); final Keyboard parentKeyboard = parentKeyboardView.getKeyboard(); parentKeyboardView.getLocationInWindow(mCoordinates); final int pointX = (mConfigShowMiniKeyboardAtTouchedPoint) ? tracker.getLastX() : parentKey.mX + parentKey.mWidth / 2; final int pointY = parentKey.mY; parentView.getLocationInWindow(mCoordinates); final int miniKeyboardLeft = pointX - miniKeyboard.getDefaultCoordX() + parentKeyboardView.getPaddingLeft(); + parentView.getPaddingLeft(); final int x = wrapUp(Math.max(0, Math.min(miniKeyboardLeft, parentKeyboardView.getWidth() - miniKeyboard.mOccupiedWidth)) parentView.getWidth() - miniKeyboard.mOccupiedWidth)) - container.getPaddingLeft() + mCoordinates[0], container.getMeasuredWidth(), 0, parentKeyboardView.getWidth()); final int y = pointY - parentKeyboard.mVerticalGap container.getMeasuredWidth(), 0, parentView.getWidth()); final int y = pointY - (container.getMeasuredHeight() - container.getPaddingBottom()) + parentKeyboardView.getPaddingTop() + mCoordinates[1]; + parentView.getPaddingTop() + mCoordinates[1]; if (miniKeyboard.setShifted(parentKeyboard.isShiftedOrShiftLocked())) { invalidateAllKeys(); } window.setContentView(container); window.setWidth(container.getMeasuredWidth()); window.setHeight(container.getMeasuredHeight()); window.showAtLocation(parentKeyboardView, Gravity.NO_GRAVITY, x, y); window.showAtLocation(parentView, Gravity.NO_GRAVITY, x, y); mOriginX = x + container.getPaddingLeft() - mCoordinates[0]; mOriginY = y + container.getPaddingTop() - mCoordinates[1]; Loading @@ -243,7 +242,7 @@ public class PopupMiniKeyboardView extends KeyboardView implements PopupPanel { @Override public boolean dismissPopupPanel() { return mParentKeyboardView.dismissPopupPanel(); return mController.dismissPopupPanel(); } @Override Loading
java/src/com/android/inputmethod/keyboard/PopupPanel.java +14 −5 Original line number Diff line number Diff line Loading @@ -16,18 +16,27 @@ package com.android.inputmethod.keyboard; import android.view.View; import android.widget.PopupWindow; public interface PopupPanel extends PointerTracker.KeyEventHandler { public interface Controller { public boolean dismissPopupPanel(); } public void setShifted(boolean shifted); /** * Show popup panel. * @param parentKeyboardView the parent KeyboardView that has the parent key. * @param parentKey the parent key that is the source of this popup panel * @param tracker the pointer tracker that pressesd the parent key * @param parentView the parent view of this popup panel * @param controller the controller that can dismiss this popup panel * @param pointX x coordinate of this popup panel * @param pointY y coordinate of this popup panel * @param window PopupWindow to be used to show this popup panel * @param listener the listener that will receive keyboard action from this popup panel. */ public void showPopupPanel(LatinKeyboardView parentKeyboardView, Key parentKey, PointerTracker tracker, PopupWindow window); public void showPopupPanel(View parentView, Controller controller, int pointX, int pointY, PopupWindow window, KeyboardActionListener listener); /** * Translate X-coordinate of touch event to the local X-coordinate of this PopupPanel. Loading