am af951181: Merge "Fix double tap shift key to turn off capslock mode"

* commit 'af951181090339ac5747daa6dd9cd11325b671ad':
  Fix double tap shift key to turn off capslock mode
main
Tadashi G. Takaoka 2012-01-16 02:14:14 -08:00 committed by Android Git Automerger
commit 93281dc578
2 changed files with 12 additions and 3 deletions

View File

@ -225,12 +225,13 @@ public class KeyboardSwitcher implements KeyboardState.SwitchActions,
keyboard.setAutomaticTemporaryUpperCase();
} else {
final boolean shifted = (shiftMode == MANUAL_SHIFT);
// TODO: Remove duplicated logic in KeyboardState#setShifted
// On non-distinct multi touch panel device, we should also turn off the shift locked
// state when shift key is pressed to go to normal mode.
// On the other hand, on distinct multi touch panel device, turning off the shift
// locked state with shift key pressing is handled by onReleaseShift().
if (!hasDistinctMultitouch() && !shifted && mState.isShiftLocked()) {
keyboard.setShiftLocked(false);
setShiftLocked(false);
}
keyboard.setShifted(shifted);
}

View File

@ -166,21 +166,29 @@ public class KeyboardState {
if (DEBUG_STATE) {
Log.d(TAG, "setShifted: shiftMode=" + shiftModeToString(shiftMode));
}
// TODO: Remove this hack in conjunction with duplicated logic below.
boolean needsToTurnOffShiftLockedLater = false;
if (shiftMode == SwitchActions.AUTOMATIC_SHIFT) {
mKeyboardShiftState.setAutomaticTemporaryUpperCase();
} else {
// TODO: Duplicated logic in KeyboardSwitcher#setShifted()
// TODO: Remove duplicated logic in KeyboardSwitcher#setShifted()
final boolean shifted = (shiftMode == SwitchActions.MANUAL_SHIFT);
// On non-distinct multi touch panel device, we should also turn off the shift locked
// state when shift key is pressed to go to normal mode.
// On the other hand, on distinct multi touch panel device, turning off the shift
// locked state with shift key pressing is handled by onReleaseShift().
if (!mHasDistinctMultitouch && !shifted && mKeyboardShiftState.isShiftLocked()) {
mKeyboardShiftState.setShiftLocked(false);
// Setting shift lock state should be delayed after
// mSwitchActions.setShifted(shiftMode) is called, because in that call the state
// is referenced.
needsToTurnOffShiftLockedLater = true;
}
mKeyboardShiftState.setShifted(shifted);
}
mSwitchActions.setShifted(shiftMode);
if (needsToTurnOffShiftLockedLater) {
mKeyboardShiftState.setShiftLocked(false);
}
}
private void setShiftLocked(boolean shiftLocked) {