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

Commit 479a3a78 authored by Ken Wakasa's avatar Ken Wakasa Committed by android-build SharedAccount
Browse files

Fix a bug in backspace handling for the "Tap again to save"

bug: 2889273
Change-Id: I0f317e203f368f5f47738154a6dee0f556d56148
parent 0c1d0eaa
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -333,6 +333,12 @@ public class CandidateView extends View {
        mShowingAddToDictionary = true;
    }

    public boolean dismissAddToDictionaryHint() {
        if (!mShowingAddToDictionary) return false;
        clear();
        return true;
    }

    public void scrollPrev() {
        int i = 0;
        final int count = mSuggestions.size();
+21 −2
Original line number Diff line number Diff line
@@ -913,6 +913,9 @@ public class LatinIME extends InputMethodService

    public boolean addWordToDictionary(String word) {
        mUserDictionary.addWord(word, 128);
        // Suggestion strip should be updated after the operation of adding word to the
        // user dictionary
        postUpdateSuggestions();
        return true;
    }

@@ -1058,11 +1061,22 @@ public class LatinIME extends InputMethodService
        } else if (mEnteredText != null && sameAsTextBeforeCursor(ic, mEnteredText)) {
            ic.deleteSurroundingText(mEnteredText.length(), 0);
        } else if (deleteChar) {
            if (mCandidateView != null && mCandidateView.dismissAddToDictionaryHint()) {
                // Go back to the suggestion mode if the user canceled the
                // "Tap again to save".
                // NOTE: In gerenal, we don't revert the word when backspacing
                // from a manual suggestion pick.  We deliberately chose a
                // different behavior only in the case of picking the first
                // suggestion (typed word).  It's intentional to have made this
                // inconsistent with backspacing after selecting other suggestions.
                revertLastWord(deleteChar);
            } else {
                sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL);
                if (mDeleteCount > DELETE_ACCELERATE_AT) {
                    sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL);
                }
            }
        }
        mJustRevertedSeparator = null;
    }

@@ -1136,6 +1150,11 @@ public class LatinIME extends InputMethodService
            mVoiceInput.incrementTextModificationInsertPunctuationCount(1);
        }

        // Should dismiss the "Tap again to save" message when handling separator
        if (mCandidateView != null && mCandidateView.dismissAddToDictionaryHint()) {
            postUpdateSuggestions();
        }

        boolean pickedDefault = false;
        // Handle separator
        InputConnection ic = getCurrentInputConnection();