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

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

Follow up change of I8b38e280 (DO NOT MERGE)

This is follow up change of I8b38e2803eb32469653484701882af35108eb69a

This change fixes the following when "Voice input on symbols keyboard"
option is selected.
- LatinIME.onCreateInputView fails to show "123mic" icon.
- Email and URL variation keyboard fails to show "123mic" icon.

Bug: 3084022
Change-Id: Ia3929bb0cc5c5c8651af816718c21d1f20e8f016
parent 179fa2c0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -260,7 +260,8 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
        mMode = mode;
        mImeOptions = imeOptions;
        if (enableVoice != mHasVoice) {
            setVoiceMode(mHasVoice, mVoiceOnPrimary);
            // TODO clean up this unnecessary recursive call.
            setVoiceMode(enableVoice, mVoiceOnPrimary);
        }
        mIsSymbols = isSymbols;

+2 −2
Original line number Diff line number Diff line
@@ -2329,8 +2329,8 @@ public class LatinIME extends InputMethodService

    private boolean shouldShowVoiceButton(FieldContext fieldContext, EditorInfo attribute) {
        return ENABLE_VOICE_BUTTON && fieldCanDoVoice(fieldContext)
                && !(attribute != null && attribute.privateImeOptions != null
                        && attribute.privateImeOptions.equals(IME_OPTION_NO_MICROPHONE))
                && !(attribute != null
                        && IME_OPTION_NO_MICROPHONE.equals(attribute.privateImeOptions))
                && SpeechRecognizer.isRecognitionAvailable(this);
    }

+24 −21
Original line number Diff line number Diff line
@@ -336,7 +336,7 @@ public class LatinKeyboard extends Keyboard {
            mMicIcon = mRes.getDrawable(R.drawable.sym_keyboard_mic);
            m123MicIcon = mRes.getDrawable(R.drawable.sym_keyboard_123_mic);
        }
        updateF1Key();
        updateDynamicKeys();
        if (mSpaceKey != null) {
            updateSpaceBarForLocale(isAutoCompletion, isBlack);
        }
@@ -350,11 +350,11 @@ public class LatinKeyboard extends Keyboard {
    public void setVoiceMode(boolean hasVoiceButton, boolean hasVoice) {
        mHasVoiceButton = hasVoiceButton;
        mVoiceEnabled = hasVoice;
        updateF1Key();
        updateDynamicKeys();
    }

    private void updateF1Key() {
        if (mF1Key == null) return;
    private void updateDynamicKeys() {
        // Update KEYCODE_MODE_CHANGE key only on alphabet mode, not on symbol mode.
        if (m123Key != null && mIsAlphaKeyboard) {
            if (mVoiceEnabled && !mHasVoiceButton) {
                m123Key.icon = m123MicIcon;
@@ -367,6 +367,8 @@ public class LatinKeyboard extends Keyboard {
            }
        }

        // Update KEYCODE_F1 key. Please note that some keyboard layout has no F1 key.
        if (mF1Key != null) {
            if (mHasVoiceButton && mVoiceEnabled) {
                mF1Key.codes = new int[] { LatinKeyboardView.KEYCODE_VOICE };
                mF1Key.label = null;
@@ -378,14 +380,15 @@ public class LatinKeyboard extends Keyboard {
            } else {
                mF1Key.label = ",";
                mF1Key.codes = new int[] { ',' };
            // HACK: draw only mF1HintIcon on offscreen buffer to adjust position of '...' to the
            // above synthesized icon
                // HACK: draw only mF1HintIcon on offscreen buffer to adjust position of '...' to
                // the above synthesized icon
                mF1Key.icon = new BitmapDrawable(mRes, drawSynthesizedSettingsHintImage(
                        mF1Key.width, mF1Key.height + mVerticalGap, null, mF1HintIcon));
                mF1Key.iconPreview = null;
                mF1Key.popupResId = R.xml.popup_comma;
            }
        }
    }

    /**
     * @return a key which should be invalidated.