Check second down event of double tap is on shift key

This change also removes unnecessary touch point tweaks.

Bug: 3385404
Change-Id: Ic398268ec4fcfaa9eafe8a70f2d10c2cd1fdfc62
main
Tadashi G. Takaoka 2011-01-25 11:30:29 +09:00
parent 6d0ff1d070
commit e5ce433a9e
2 changed files with 25 additions and 15 deletions

View File

@ -403,7 +403,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
GestureDetector.SimpleOnGestureListener listener =
new GestureDetector.SimpleOnGestureListener() {
private boolean mProcessingDoubleTapEvent = false;
private boolean mProcessingShiftDoubleTapEvent = false;
@Override
public boolean onFling(MotionEvent me1, MotionEvent me2, float velocityX,
@ -424,25 +424,39 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
}
@Override
public boolean onDoubleTap(MotionEvent e) {
public boolean onDoubleTap(MotionEvent firstDown) {
if (ENABLE_CAPSLOCK_BY_DOUBLETAP && mKeyboard instanceof LatinKeyboard
&& ((LatinKeyboard) mKeyboard).isAlphaKeyboard()) {
final int pointerIndex = e.getActionIndex();
final int id = e.getPointerId(pointerIndex);
final int pointerIndex = firstDown.getActionIndex();
final int id = firstDown.getPointerId(pointerIndex);
final PointerTracker tracker = getPointerTracker(id);
if (tracker.isOnShiftKey((int)e.getX(), (int)e.getY())) {
onDoubleTapShiftKey(tracker);
mProcessingDoubleTapEvent = true;
// If the first down event is on shift key.
if (tracker.isOnShiftKey((int)firstDown.getX(), (int)firstDown.getY())) {
mProcessingShiftDoubleTapEvent = true;
return true;
}
}
mProcessingDoubleTapEvent = false;
mProcessingShiftDoubleTapEvent = false;
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return mProcessingDoubleTapEvent;
public boolean onDoubleTapEvent(MotionEvent secondTap) {
if (mProcessingShiftDoubleTapEvent
&& secondTap.getAction() == MotionEvent.ACTION_DOWN) {
final MotionEvent secondDown = secondTap;
final int pointerIndex = secondDown.getActionIndex();
final int id = secondDown.getPointerId(pointerIndex);
final PointerTracker tracker = getPointerTracker(id);
// If the second down event is also on shift key.
if (tracker.isOnShiftKey((int)secondDown.getX(), (int)secondDown.getY())) {
onDoubleTapShiftKey(tracker);
return true;
}
// Otherwise these events should not be handled as double tap.
mProcessingShiftDoubleTapEvent = false;
}
return mProcessingShiftDoubleTapEvent;
}
};

View File

@ -315,11 +315,7 @@ public class LatinKeyboard extends Keyboard {
int x = pointX;
int y = pointY;
final int code = key.mCode;
if (code == CODE_SHIFT || code == CODE_DELETE) {
y -= key.mHeight / 10;
if (code == CODE_SHIFT) x += key.mWidth / 6;
if (code == CODE_DELETE) x -= key.mWidth / 6;
} else if (code == CODE_SPACE) {
if (code == CODE_SPACE) {
y += LatinKeyboard.sSpacebarVerticalCorrection;
if (SubtypeSwitcher.getInstance().useSpacebarLanguageSwitcher()
&& SubtypeSwitcher.getInstance().getEnabledKeyboardLocaleCount() > 1) {