Merge "(de)activating spell check taken into account immediately" into ics-mr1
This commit is contained in:
committed by
Android (Google) Code Review
commit
f96aa3b197
@@ -68,6 +68,8 @@ public class SpellChecker implements SpellCheckerSessionListener {
|
||||
// concurrently due to the asynchronous nature of onGetSuggestions.
|
||||
private WordIterator mWordIterator;
|
||||
|
||||
private TextServicesManager mTextServicesManager;
|
||||
|
||||
public SpellChecker(TextView textView) {
|
||||
mTextView = textView;
|
||||
|
||||
@@ -81,20 +83,19 @@ public class SpellChecker implements SpellCheckerSessionListener {
|
||||
mCookie = hashCode();
|
||||
}
|
||||
|
||||
private void setLocale(Locale locale) {
|
||||
private void resetSession() {
|
||||
closeSession();
|
||||
|
||||
final TextServicesManager textServicesManager = (TextServicesManager)
|
||||
mTextView.getContext().getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
|
||||
if (!textServicesManager.isSpellCheckerEnabled()) {
|
||||
mTextServicesManager = (TextServicesManager) mTextView.getContext().
|
||||
getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
|
||||
if (!mTextServicesManager.isSpellCheckerEnabled()) {
|
||||
mSpellCheckerSession = null;
|
||||
} else {
|
||||
mSpellCheckerSession = textServicesManager.newSpellCheckerSession(
|
||||
mSpellCheckerSession = mTextServicesManager.newSpellCheckerSession(
|
||||
null /* Bundle not currently used by the textServicesManager */,
|
||||
locale, this,
|
||||
mCurrentLocale, this,
|
||||
false /* means any available languages from current spell checker */);
|
||||
}
|
||||
mCurrentLocale = locale;
|
||||
|
||||
// Restore SpellCheckSpans in pool
|
||||
for (int i = 0; i < mLength; i++) {
|
||||
@@ -103,9 +104,6 @@ public class SpellChecker implements SpellCheckerSessionListener {
|
||||
}
|
||||
mLength = 0;
|
||||
|
||||
// Change SpellParsers' wordIterator locale
|
||||
mWordIterator = new WordIterator(locale);
|
||||
|
||||
// Remove existing misspelled SuggestionSpans
|
||||
mTextView.removeMisspelledSpans((Editable) mTextView.getText());
|
||||
|
||||
@@ -113,6 +111,18 @@ public class SpellChecker implements SpellCheckerSessionListener {
|
||||
mTextView.onLocaleChanged();
|
||||
}
|
||||
|
||||
private void setLocale(Locale locale) {
|
||||
mCurrentLocale = locale;
|
||||
|
||||
resetSession();
|
||||
|
||||
// Change SpellParsers' wordIterator locale
|
||||
mWordIterator = new WordIterator(locale);
|
||||
|
||||
// This class is the listener for locale change: warn other locale-aware objects
|
||||
mTextView.onLocaleChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if a spell checker session has successfully been created. Returns false if not,
|
||||
* for instance when spell checking has been disabled in settings.
|
||||
@@ -179,6 +189,12 @@ public class SpellChecker implements SpellCheckerSessionListener {
|
||||
// Re-check the entire text
|
||||
start = 0;
|
||||
end = mTextView.getText().length();
|
||||
} else {
|
||||
final boolean spellCheckerActivated = mTextServicesManager.isSpellCheckerEnabled();
|
||||
if (isSessionActive() != spellCheckerActivated) {
|
||||
// Spell checker has been turned of or off since last spellCheck
|
||||
resetSession();
|
||||
}
|
||||
}
|
||||
|
||||
if (!isSessionActive()) return;
|
||||
|
||||
Reference in New Issue
Block a user