Loading java/src/com/android/inputmethod/keyboard/KeyboardView.java +7 −1 Original line number Diff line number Diff line Loading @@ -889,8 +889,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { @Override public void showKeyPreview(int keyIndex, PointerTracker tracker) { if (mShowKeyPreview || mKeyboard.needSpacebarPreview(keyIndex)) { if (mShowKeyPreview) { mHandler.showKeyPreview(mDelayBeforePreview, keyIndex, tracker); } else if (mKeyboard.needSpacebarPreview(keyIndex)) { // Show key preview (in this case, slide language switcher) without any delay. showKey(keyIndex, tracker); } } Loading @@ -899,6 +902,9 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { if (mShowKeyPreview) { mHandler.cancelShowKeyPreview(tracker); mHandler.dismissKeyPreview(mDelayAfterPreview, tracker); } else if (mKeyboard.needSpacebarPreview(KeyDetector.NOT_A_KEY)) { // Dismiss key preview (in this case, slide language switcher) without any delay. mPreviewText.setVisibility(View.INVISIBLE); } } Loading java/src/com/android/inputmethod/keyboard/PointerTracker.java +10 −7 Original line number Diff line number Diff line Loading @@ -392,7 +392,7 @@ public class PointerTracker { startLongPressTimer(keyIndex); showKeyPreview(keyIndex); setPressedKeyGraphics(keyIndex); } else if (!isMinorMoveBounce(x, y, keyIndex)) { } else if (isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) { // The pointer has been slid in to the new key from the previous key, we must call // onRelease() first to notify that the previous key has been released, then call // onPress() to notify that the new key is being pressed. Loading Loading @@ -430,9 +430,12 @@ public class PointerTracker { } return; } } else if (mKeyboard.needSpacebarPreview(keyIndex)) { // Display spacebar slide language switcher. showKeyPreview(keyIndex); } } else { if (oldKey != null && !isMinorMoveBounce(x, y, keyIndex)) { if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) { // The pointer has been slid out from the previous key, we must call onRelease() to // notify that the previous key has been released. setReleasedKeyGraphics(oldKeyIndex); Loading Loading @@ -483,7 +486,7 @@ public class PointerTracker { mIsInSlidingKeyInput = false; final PointerTrackerKeyState keyState = mKeyState; final int keyX, keyY; if (!isMinorMoveBounce(x, y, keyState.onMoveKey(x, y))) { if (isMajorEnoughMoveToBeOnNewKey(x, y, keyState.onMoveKey(x, y))) { keyX = x; keyY = y; } else { Loading Loading @@ -544,16 +547,16 @@ public class PointerTracker { return mKeyState.getDownTime(); } private boolean isMinorMoveBounce(int x, int y, int newKey) { private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, int newKey) { if (mKeys == null || mKeyHysteresisDistanceSquared < 0) throw new IllegalStateException("keyboard and/or hysteresis not set"); int curKey = mKeyState.getKeyIndex(); if (newKey == curKey) { return true; return false; } else if (isValidKeyIndex(curKey)) { return mKeys.get(curKey).squaredDistanceToEdge(x, y) < mKeyHysteresisDistanceSquared; return mKeys.get(curKey).squaredDistanceToEdge(x, y) >= mKeyHysteresisDistanceSquared; } else { return false; return true; } } Loading Loading
java/src/com/android/inputmethod/keyboard/KeyboardView.java +7 −1 Original line number Diff line number Diff line Loading @@ -889,8 +889,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { @Override public void showKeyPreview(int keyIndex, PointerTracker tracker) { if (mShowKeyPreview || mKeyboard.needSpacebarPreview(keyIndex)) { if (mShowKeyPreview) { mHandler.showKeyPreview(mDelayBeforePreview, keyIndex, tracker); } else if (mKeyboard.needSpacebarPreview(keyIndex)) { // Show key preview (in this case, slide language switcher) without any delay. showKey(keyIndex, tracker); } } Loading @@ -899,6 +902,9 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { if (mShowKeyPreview) { mHandler.cancelShowKeyPreview(tracker); mHandler.dismissKeyPreview(mDelayAfterPreview, tracker); } else if (mKeyboard.needSpacebarPreview(KeyDetector.NOT_A_KEY)) { // Dismiss key preview (in this case, slide language switcher) without any delay. mPreviewText.setVisibility(View.INVISIBLE); } } Loading
java/src/com/android/inputmethod/keyboard/PointerTracker.java +10 −7 Original line number Diff line number Diff line Loading @@ -392,7 +392,7 @@ public class PointerTracker { startLongPressTimer(keyIndex); showKeyPreview(keyIndex); setPressedKeyGraphics(keyIndex); } else if (!isMinorMoveBounce(x, y, keyIndex)) { } else if (isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) { // The pointer has been slid in to the new key from the previous key, we must call // onRelease() first to notify that the previous key has been released, then call // onPress() to notify that the new key is being pressed. Loading Loading @@ -430,9 +430,12 @@ public class PointerTracker { } return; } } else if (mKeyboard.needSpacebarPreview(keyIndex)) { // Display spacebar slide language switcher. showKeyPreview(keyIndex); } } else { if (oldKey != null && !isMinorMoveBounce(x, y, keyIndex)) { if (oldKey != null && isMajorEnoughMoveToBeOnNewKey(x, y, keyIndex)) { // The pointer has been slid out from the previous key, we must call onRelease() to // notify that the previous key has been released. setReleasedKeyGraphics(oldKeyIndex); Loading Loading @@ -483,7 +486,7 @@ public class PointerTracker { mIsInSlidingKeyInput = false; final PointerTrackerKeyState keyState = mKeyState; final int keyX, keyY; if (!isMinorMoveBounce(x, y, keyState.onMoveKey(x, y))) { if (isMajorEnoughMoveToBeOnNewKey(x, y, keyState.onMoveKey(x, y))) { keyX = x; keyY = y; } else { Loading Loading @@ -544,16 +547,16 @@ public class PointerTracker { return mKeyState.getDownTime(); } private boolean isMinorMoveBounce(int x, int y, int newKey) { private boolean isMajorEnoughMoveToBeOnNewKey(int x, int y, int newKey) { if (mKeys == null || mKeyHysteresisDistanceSquared < 0) throw new IllegalStateException("keyboard and/or hysteresis not set"); int curKey = mKeyState.getKeyIndex(); if (newKey == curKey) { return true; return false; } else if (isValidKeyIndex(curKey)) { return mKeys.get(curKey).squaredDistanceToEdge(x, y) < mKeyHysteresisDistanceSquared; return mKeys.get(curKey).squaredDistanceToEdge(x, y) >= mKeyHysteresisDistanceSquared; } else { return false; return true; } } Loading