Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99019d52 authored by Gilles Debunne's avatar Gilles Debunne Committed by Android Git Automerger
Browse files

am f96aa3b1: Merge "(de)activating spell check taken into account immediately" into ics-mr1

* commit 'f96aa3b1':
  (de)activating spell check taken into account immediately
parents 5126f1d4 f96aa3b1
Loading
Loading
Loading
Loading
+26 −10
Original line number Diff line number Diff line
@@ -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;