am fe2d9079: Fix a bug that the typed word with the blue underline indicator will be duplicated

* commit 'fe2d90798ea409ee39d6f63942eb01bb7eed98e3':
  Fix a bug that the typed word with the blue underline indicator will be duplicated
This commit is contained in:
satok 2011-10-17 11:32:24 -07:00 committed by Android Git Automerger
commit c5d51a40a4
2 changed files with 73 additions and 38 deletions

View file

@ -0,0 +1,68 @@
/**
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.android.inputmethod.latin;
import android.util.Log;
public class ComposingStateManager {
private static final String TAG = ComposingStateManager.class.getSimpleName();
private static final ComposingStateManager sInstance = new ComposingStateManager();
private boolean mAutoCorrectionIndicatorOn;
private boolean mIsComposing;
public static ComposingStateManager getInstance() {
return sInstance;
}
private ComposingStateManager() {
mAutoCorrectionIndicatorOn = false;
mIsComposing = false;
}
public synchronized void onStartComposingText() {
if (!mIsComposing) {
if (LatinImeLogger.sDBG) {
Log.i(TAG, "Start composing text.");
}
mAutoCorrectionIndicatorOn = false;
mIsComposing = true;
}
}
public synchronized void onFinishComposingText() {
if (mIsComposing) {
if (LatinImeLogger.sDBG) {
Log.i(TAG, "Finish composing text.");
}
mAutoCorrectionIndicatorOn = false;
mIsComposing = false;
}
}
public synchronized boolean isAutoCorrectionIndicatorOn() {
return mAutoCorrectionIndicatorOn;
}
public synchronized void setAutoCorrectionIndicatorOn(boolean on) {
// Auto-correction indicator should be specified only when the current state is "composing".
if (!mIsComposing) return;
if (LatinImeLogger.sDBG) {
Log.i(TAG, "Set auto correction Indicator: " + on);
}
mAutoCorrectionIndicatorOn = on;
}
}

View file

@ -230,7 +230,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
private CharSequence mEnteredText; private CharSequence mEnteredText;
private final ComposingStateManager mComposingStateManager = private final ComposingStateManager mComposingStateManager =
new ComposingStateManager(); ComposingStateManager.getInstance();
public final UIHandler mHandler = new UIHandler(this); public final UIHandler mHandler = new UIHandler(this);
@ -1635,6 +1635,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
mComposingStateManager.isAutoCorrectionIndicatorOn(); mComposingStateManager.isAutoCorrectionIndicatorOn();
final boolean newAutoCorrectionIndicator = Utils.willAutoCorrect(words); final boolean newAutoCorrectionIndicator = Utils.willAutoCorrect(words);
if (oldAutoCorrectionIndicator != newAutoCorrectionIndicator) { if (oldAutoCorrectionIndicator != newAutoCorrectionIndicator) {
if (LatinImeLogger.sDBG) {
Log.d(TAG, "Flip the indicator. " + oldAutoCorrectionIndicator
+ " -> " + newAutoCorrectionIndicator);
}
final CharSequence textWithUnderline = newAutoCorrectionIndicator final CharSequence textWithUnderline = newAutoCorrectionIndicator
? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline( ? SuggestionSpanUtils.getTextWithAutoCorrectionIndicatorUnderline(
this, mComposingStringBuilder) this, mComposingStringBuilder)
@ -2300,43 +2304,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
showOptionDialogInternal(builder.create()); showOptionDialogInternal(builder.create());
} }
private static class ComposingStateManager {
private boolean mAutoCorrectionIndicatorOn;
private boolean mIsComposing;
public ComposingStateManager() {
mAutoCorrectionIndicatorOn = false;
mIsComposing = false;
}
private void onStartComposingText() {
if (!mIsComposing) {
if (LatinImeLogger.sDBG) {
Log.i(TAG, "Start composing text.");
}
mAutoCorrectionIndicatorOn = false;
mIsComposing = true;
}
}
private void onFinishComposingText() {
if (mIsComposing) {
if (LatinImeLogger.sDBG) {
Log.i(TAG, "Finish composing text.");
}
mAutoCorrectionIndicatorOn = false;
mIsComposing = false;
}
}
public boolean isAutoCorrectionIndicatorOn() {
return mAutoCorrectionIndicatorOn;
}
public void setAutoCorrectionIndicatorOn(boolean on) {
mAutoCorrectionIndicatorOn = on;
}
}
@Override @Override
protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) { protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) {
super.dump(fd, fout, args); super.dump(fd, fout, args);