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

Commit d0725a68 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Update shift state only when input field is restarted

Bug: 7482766
Change-Id: Ifdfa110c44b95acfbcd3e0aa34f675c70b7d7285
parent 7648b37d
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -683,8 +683,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            accessUtils.onStartInputViewInternal(mainKeyboardView, editorInfo, restarting);
        }

        final boolean selectionChanged = mLastSelectionStart != editorInfo.initialSelStart
                || mLastSelectionEnd != editorInfo.initialSelEnd;
        final boolean inputTypeChanged = !mCurrentSettings.isSameInputType(editorInfo);
        final boolean isDifferentTextField = !restarting || inputTypeChanged;
        if (isDifferentTextField) {
@@ -732,20 +730,17 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
            // TODO: Come up with a more comprehensive way to reset the keyboard layout when
            // a keyboard layout set doesn't get reloaded in this method.
            switcher.resetKeyboardStateToAlphabet();
            // In apps like Talk, we come here when the text is sent and the field gets emptied and
            // we need to re-evaluate the shift state, but not the whole layout which would be
            // disruptive.
            // Space state must be updated before calling updateShiftState
            switcher.updateShiftState();
        }
        setSuggestionStripShownInternal(
                isSuggestionsStripVisible(), /* needsInputViewShown */ false);

        mLastSelectionStart = editorInfo.initialSelStart;
        mLastSelectionEnd = editorInfo.initialSelEnd;
        // If we come here something in the text state is very likely to have changed.
        // We should update the shift state regardless of whether we are restarting or not, because
        // this is not perceived as a layout change that may be disruptive like we may have with
        // switcher.loadKeyboard; in apps like Talk, we come here when the text is sent and the
        // field gets emptied and we need to re-evaluate the shift state, but not the whole layout
        // which would be disruptive.
        // Space state must be updated before calling updateShiftState
        mKeyboardSwitcher.updateShiftState();

        mHandler.cancelUpdateSuggestionStrip();
        mHandler.cancelDoubleSpacesTimer();