Loading java/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,8 @@ <dimen name="more_suggestions_key_horizontal_padding">12dip</dimen> <dimen name="more_suggestions_row_height">40dip</dimen> <dimen name="more_suggestions_bottom_gap">6dip</dimen> <dimen name="more_suggestions_slide_allowance">0.2in</dimen> <dimen name="more_suggestions_modal_tolerance">0.05in</dimen> <dimen name="more_suggestions_slide_allowance">0.1in</dimen> <integer name="max_more_suggestions_row">6</integer> <fraction name="min_more_suggestions_width">90%</fraction> <fraction name="more_suggestions_info_ratio">18%</fraction> Loading java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +0 −2 Original line number Diff line number Diff line Loading @@ -438,8 +438,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mMoreKeysWindow = new PopupWindow(getContext()); mMoreKeysWindow.setBackgroundDrawable(null); mMoreKeysWindow.setAnimationStyle(R.style.MiniKeyboardAnimation); // Allow popup window to be drawn off the screen. mMoreKeysWindow.setClippingEnabled(false); } mMoreKeysPanel = moreKeysPanel; mMoreKeysPanelPointerTrackerId = tracker.mPointerId; Loading java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java +2 −4 Original line number Diff line number Diff line Loading @@ -79,10 +79,8 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel { super(context, attrs, defStyle); final Resources res = context.getResources(); // Override default ProximityKeyDetector. mKeyDetector = new MoreKeysDetector(res.getDimension( R.dimen.mini_keyboard_slide_allowance)); // Remove gesture detector on mini-keyboard mKeyDetector = new MoreKeysDetector( res.getDimension(R.dimen.mini_keyboard_slide_allowance)); setKeyPreviewPopupEnabled(false, 0); } Loading java/src/com/android/inputmethod/latin/MoreSuggestionsView.java +46 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.content.res.Resources; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; Loading @@ -29,7 +30,9 @@ import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.keyboard.MoreKeysDetector; import com.android.inputmethod.keyboard.MoreKeysPanel; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler; import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; Loading @@ -40,7 +43,8 @@ import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { private final int[] mCoordinates = new int[2]; private final KeyDetector mKeyDetector; private final KeyDetector mModalPanelKeyDetector; private final KeyDetector mSlidingPanelKeyDetector; private Controller mController; private KeyboardActionListener mListener; Loading Loading @@ -80,10 +84,9 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { super(context, attrs, defStyle); final Resources res = context.getResources(); // Override default ProximityKeyDetector. mKeyDetector = new MoreKeysDetector(res.getDimension( R.dimen.more_suggestions_slide_allowance)); // Remove gesture detector on suggestions pane mModalPanelKeyDetector = new KeyDetector(/* keyHysteresisDistance */ 0); mSlidingPanelKeyDetector = new MoreKeysDetector( res.getDimension(R.dimen.more_suggestions_slide_allowance)); setKeyPreviewPopupEnabled(false, 0); } Loading @@ -102,13 +105,14 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { @Override public void setKeyboard(Keyboard keyboard) { super.setKeyboard(keyboard); mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), mModalPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), -getPaddingTop()); mSlidingPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), -getPaddingTop() + mVerticalCorrection); } @Override public KeyDetector getKeyDetector() { return mKeyDetector; return mSlidingPanelKeyDetector; } @Override Loading Loading @@ -187,4 +191,39 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { public int translateY(int y) { return y - mOriginY; } private final KeyEventHandler mModalPanelKeyEventHandler = new KeyEventHandler() { @Override public KeyDetector getKeyDetector() { return mModalPanelKeyDetector; } @Override public KeyboardActionListener getKeyboardActionListener() { return mSuggestionsPaneListener; } @Override public DrawingProxy getDrawingProxy() { return MoreSuggestionsView.this; } @Override public TimerProxy getTimerProxy() { return EMPTY_TIMER_PROXY; } }; @Override public boolean onTouchEvent(MotionEvent me) { final int action = me.getAction(); final long eventTime = me.getEventTime(); final int index = me.getActionIndex(); final int id = me.getPointerId(index); final PointerTracker tracker = PointerTracker.getPointerTracker(id, this); final int x = (int)me.getX(index); final int y = (int)me.getY(index); tracker.processMotionEvent(action, x, y, eventTime, mModalPanelKeyEventHandler); return true; } } java/src/com/android/inputmethod/latin/SuggestionsView.java +33 −6 Original line number Diff line number Diff line Loading @@ -503,6 +503,9 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, mMoreSuggestionsWindow.setWindowLayoutMode( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mMoreSuggestionsWindow.setBackgroundDrawable(null); final Resources res = context.getResources(); mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset( R.dimen.more_suggestions_modal_tolerance); } /** Loading Loading @@ -747,12 +750,9 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, moreKeysPanel.showMoreKeysPanel( this, mMoreSuggestionsController, pointX, pointY, mMoreSuggestionsWindow, mMoreSuggestionsListener); // TODO: Should figure out how to select the pointer tracker correctly. final PointerTracker tracker = PointerTracker.getPointerTracker(0, moreKeysPanel); final int translatedX = moreKeysPanel.translateX(tracker.getLastX()); final int translatedY = moreKeysPanel.translateY(tracker.getLastY()); tracker.onShowMoreKeysPanel( translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel); mCheckingIfModalOrSlidingMode = true; mOriginX = mLastX; mOriginY = mLastY; view.setPressed(false); mKeyboardView.dimEntireKeyboard(true); return true; Loading @@ -760,9 +760,19 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, return false; } // Working variables for onLongClick and dispatchTouchEvent. private boolean mCheckingIfModalOrSlidingMode; private int mLastX; private int mLastY; private int mOriginX; private int mOriginY; private final int mMoreSuggestionsModalTolerance; @Override public boolean dispatchTouchEvent(MotionEvent me) { if (!mMoreSuggestionsWindow.isShowing()) { mLastX = (int)me.getX(); mLastY = (int)me.getY(); return super.dispatchTouchEvent(me); } Loading @@ -777,6 +787,23 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, final int translatedX = moreKeysPanel.translateX(x); final int translatedY = moreKeysPanel.translateY(y); if (mCheckingIfModalOrSlidingMode) { final int deltaX = Math.abs(x - mOriginX); final int deltaY = Math.abs(y - mOriginY); if (deltaX >= mMoreSuggestionsModalTolerance || deltaY >= mMoreSuggestionsModalTolerance) { // Decided to be in the sliding input mode mCheckingIfModalOrSlidingMode = false; tracker.onShowMoreKeysPanel( translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) { // Decided to be in the modal input mode mCheckingIfModalOrSlidingMode = false; } return true; } // Process sliding motion events tracker.processMotionEvent(action, translatedX, translatedY, eventTime, moreKeysPanel); return true; } Loading Loading
java/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,8 @@ <dimen name="more_suggestions_key_horizontal_padding">12dip</dimen> <dimen name="more_suggestions_row_height">40dip</dimen> <dimen name="more_suggestions_bottom_gap">6dip</dimen> <dimen name="more_suggestions_slide_allowance">0.2in</dimen> <dimen name="more_suggestions_modal_tolerance">0.05in</dimen> <dimen name="more_suggestions_slide_allowance">0.1in</dimen> <integer name="max_more_suggestions_row">6</integer> <fraction name="min_more_suggestions_width">90%</fraction> <fraction name="more_suggestions_info_ratio">18%</fraction> Loading
java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +0 −2 Original line number Diff line number Diff line Loading @@ -438,8 +438,6 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mMoreKeysWindow = new PopupWindow(getContext()); mMoreKeysWindow.setBackgroundDrawable(null); mMoreKeysWindow.setAnimationStyle(R.style.MiniKeyboardAnimation); // Allow popup window to be drawn off the screen. mMoreKeysWindow.setClippingEnabled(false); } mMoreKeysPanel = moreKeysPanel; mMoreKeysPanelPointerTrackerId = tracker.mPointerId; Loading
java/src/com/android/inputmethod/keyboard/MiniKeyboardView.java +2 −4 Original line number Diff line number Diff line Loading @@ -79,10 +79,8 @@ public class MiniKeyboardView extends KeyboardView implements MoreKeysPanel { super(context, attrs, defStyle); final Resources res = context.getResources(); // Override default ProximityKeyDetector. mKeyDetector = new MoreKeysDetector(res.getDimension( R.dimen.mini_keyboard_slide_allowance)); // Remove gesture detector on mini-keyboard mKeyDetector = new MoreKeysDetector( res.getDimension(R.dimen.mini_keyboard_slide_allowance)); setKeyPreviewPopupEnabled(false, 0); } Loading
java/src/com/android/inputmethod/latin/MoreSuggestionsView.java +46 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.content.Context; import android.content.res.Resources; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; Loading @@ -29,7 +30,9 @@ import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.keyboard.MoreKeysDetector; import com.android.inputmethod.keyboard.MoreKeysPanel; import com.android.inputmethod.keyboard.PointerTracker; import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy; import com.android.inputmethod.keyboard.PointerTracker.KeyEventHandler; import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; Loading @@ -40,7 +43,8 @@ import com.android.inputmethod.keyboard.PointerTracker.TimerProxy; public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { private final int[] mCoordinates = new int[2]; private final KeyDetector mKeyDetector; private final KeyDetector mModalPanelKeyDetector; private final KeyDetector mSlidingPanelKeyDetector; private Controller mController; private KeyboardActionListener mListener; Loading Loading @@ -80,10 +84,9 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { super(context, attrs, defStyle); final Resources res = context.getResources(); // Override default ProximityKeyDetector. mKeyDetector = new MoreKeysDetector(res.getDimension( R.dimen.more_suggestions_slide_allowance)); // Remove gesture detector on suggestions pane mModalPanelKeyDetector = new KeyDetector(/* keyHysteresisDistance */ 0); mSlidingPanelKeyDetector = new MoreKeysDetector( res.getDimension(R.dimen.more_suggestions_slide_allowance)); setKeyPreviewPopupEnabled(false, 0); } Loading @@ -102,13 +105,14 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { @Override public void setKeyboard(Keyboard keyboard) { super.setKeyboard(keyboard); mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), mModalPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), -getPaddingTop()); mSlidingPanelKeyDetector.setKeyboard(keyboard, -getPaddingLeft(), -getPaddingTop() + mVerticalCorrection); } @Override public KeyDetector getKeyDetector() { return mKeyDetector; return mSlidingPanelKeyDetector; } @Override Loading Loading @@ -187,4 +191,39 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel { public int translateY(int y) { return y - mOriginY; } private final KeyEventHandler mModalPanelKeyEventHandler = new KeyEventHandler() { @Override public KeyDetector getKeyDetector() { return mModalPanelKeyDetector; } @Override public KeyboardActionListener getKeyboardActionListener() { return mSuggestionsPaneListener; } @Override public DrawingProxy getDrawingProxy() { return MoreSuggestionsView.this; } @Override public TimerProxy getTimerProxy() { return EMPTY_TIMER_PROXY; } }; @Override public boolean onTouchEvent(MotionEvent me) { final int action = me.getAction(); final long eventTime = me.getEventTime(); final int index = me.getActionIndex(); final int id = me.getPointerId(index); final PointerTracker tracker = PointerTracker.getPointerTracker(id, this); final int x = (int)me.getX(index); final int y = (int)me.getY(index); tracker.processMotionEvent(action, x, y, eventTime, mModalPanelKeyEventHandler); return true; } }
java/src/com/android/inputmethod/latin/SuggestionsView.java +33 −6 Original line number Diff line number Diff line Loading @@ -503,6 +503,9 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, mMoreSuggestionsWindow.setWindowLayoutMode( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); mMoreSuggestionsWindow.setBackgroundDrawable(null); final Resources res = context.getResources(); mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset( R.dimen.more_suggestions_modal_tolerance); } /** Loading Loading @@ -747,12 +750,9 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, moreKeysPanel.showMoreKeysPanel( this, mMoreSuggestionsController, pointX, pointY, mMoreSuggestionsWindow, mMoreSuggestionsListener); // TODO: Should figure out how to select the pointer tracker correctly. final PointerTracker tracker = PointerTracker.getPointerTracker(0, moreKeysPanel); final int translatedX = moreKeysPanel.translateX(tracker.getLastX()); final int translatedY = moreKeysPanel.translateY(tracker.getLastY()); tracker.onShowMoreKeysPanel( translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel); mCheckingIfModalOrSlidingMode = true; mOriginX = mLastX; mOriginY = mLastY; view.setPressed(false); mKeyboardView.dimEntireKeyboard(true); return true; Loading @@ -760,9 +760,19 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, return false; } // Working variables for onLongClick and dispatchTouchEvent. private boolean mCheckingIfModalOrSlidingMode; private int mLastX; private int mLastY; private int mOriginX; private int mOriginY; private final int mMoreSuggestionsModalTolerance; @Override public boolean dispatchTouchEvent(MotionEvent me) { if (!mMoreSuggestionsWindow.isShowing()) { mLastX = (int)me.getX(); mLastY = (int)me.getY(); return super.dispatchTouchEvent(me); } Loading @@ -777,6 +787,23 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener, final int translatedX = moreKeysPanel.translateX(x); final int translatedY = moreKeysPanel.translateY(y); if (mCheckingIfModalOrSlidingMode) { final int deltaX = Math.abs(x - mOriginX); final int deltaY = Math.abs(y - mOriginY); if (deltaX >= mMoreSuggestionsModalTolerance || deltaY >= mMoreSuggestionsModalTolerance) { // Decided to be in the sliding input mode mCheckingIfModalOrSlidingMode = false; tracker.onShowMoreKeysPanel( translatedX, translatedY, SystemClock.uptimeMillis(), moreKeysPanel); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) { // Decided to be in the modal input mode mCheckingIfModalOrSlidingMode = false; } return true; } // Process sliding motion events tracker.processMotionEvent(action, translatedX, translatedY, eventTime, moreKeysPanel); return true; } Loading