Don't recapitalize just at the start of input
Bug: 13283555 Change-Id: Iab0466425dc44779d110f2cd29d725d22eb04827
This commit is contained in:
parent
4a1113b6b0
commit
c84b10840e
2 changed files with 21 additions and 7 deletions
|
@ -134,7 +134,7 @@ public final class InputLogic {
|
|||
resetComposingState(true /* alsoResetLastComposedWord */);
|
||||
mDeleteCount = 0;
|
||||
mSpaceState = SpaceState.NONE;
|
||||
mRecapitalizeStatus.stop(); // In case a recapitalization is started
|
||||
mRecapitalizeStatus.disable(); // Do not perform recapitalize until the cursor is moved once
|
||||
mCurrentlyPressedHardwareKeys.clear();
|
||||
mSuggestedWords = SuggestedWords.EMPTY;
|
||||
// In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
|
||||
|
@ -345,6 +345,8 @@ public final class InputLogic {
|
|||
newSelStart, newSelEnd, false /* shouldFinishComposition */);
|
||||
}
|
||||
|
||||
// The cursor has been moved : we now accept to perform recapitalization
|
||||
mRecapitalizeStatus.enable();
|
||||
// We moved the cursor. If we are touching a word, we need to resume suggestion.
|
||||
mLatinIME.mHandler.postResumeSuggestions();
|
||||
// Stop the last recapitalization, if started.
|
||||
|
@ -369,10 +371,6 @@ public final class InputLogic {
|
|||
final int keyboardShiftMode,
|
||||
// TODO: remove this argument
|
||||
final LatinIME.UIHandler handler) {
|
||||
// TODO: rework the following to not squash the keycode and the code point into the same
|
||||
// var because it's confusing. Instead the switch() should handle this in a readable manner.
|
||||
final int code =
|
||||
Event.NOT_A_CODE_POINT == event.mCodePoint ? event.mKeyCode : event.mCodePoint;
|
||||
final InputTransaction inputTransaction = new InputTransaction(settingsValues, event,
|
||||
SystemClock.uptimeMillis(), mSpaceState,
|
||||
getActualCapsMode(settingsValues, keyboardShiftMode));
|
||||
|
@ -1138,8 +1136,8 @@ public final class InputLogic {
|
|||
* @param settingsValues The current settings values.
|
||||
*/
|
||||
private void performRecapitalization(final SettingsValues settingsValues) {
|
||||
if (!mConnection.hasSelection()) {
|
||||
return; // No selection
|
||||
if (!mConnection.hasSelection() || !mRecapitalizeStatus.mIsEnabled()) {
|
||||
return; // No selection or recapitalize is disabled for now
|
||||
}
|
||||
final int selectionStart = mConnection.getExpectedSelectionStart();
|
||||
final int selectionEnd = mConnection.getExpectedSelectionEnd();
|
||||
|
|
|
@ -63,6 +63,7 @@ public class RecapitalizeStatus {
|
|||
private int[] mSortedSeparators;
|
||||
private String mStringAfter;
|
||||
private boolean mIsStarted;
|
||||
private boolean mIsEnabled = true;
|
||||
|
||||
private static final int[] EMPTY_STORTED_SEPARATORS = {};
|
||||
|
||||
|
@ -74,6 +75,9 @@ public class RecapitalizeStatus {
|
|||
|
||||
public void start(final int cursorStart, final int cursorEnd, final String string,
|
||||
final Locale locale, final int[] sortedSeparators) {
|
||||
if (!mIsEnabled) {
|
||||
return;
|
||||
}
|
||||
mCursorStartBefore = cursorStart;
|
||||
mStringBefore = string;
|
||||
mCursorStartAfter = cursorStart;
|
||||
|
@ -107,6 +111,18 @@ public class RecapitalizeStatus {
|
|||
return mIsStarted;
|
||||
}
|
||||
|
||||
public void enable() {
|
||||
mIsEnabled = true;
|
||||
}
|
||||
|
||||
public void disable() {
|
||||
mIsEnabled = false;
|
||||
}
|
||||
|
||||
public boolean mIsEnabled() {
|
||||
return mIsEnabled;
|
||||
}
|
||||
|
||||
public boolean isSetAt(final int cursorStart, final int cursorEnd) {
|
||||
return cursorStart == mCursorStartAfter && cursorEnd == mCursorEndAfter;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue