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

Commit ef2c537e authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Show InputView even when hardware keyboard is connected"

parents 2ae42d78 06514f00
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.inputmethod.keyboard;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.preference.PreferenceManager;
import android.util.Log;
@@ -233,11 +234,21 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
    }

    private void setMainKeyboardFrame() {
        mMainKeyboardFrame.setVisibility(View.VISIBLE);
        mMainKeyboardFrame.setVisibility(hasHardwareKeyboard() ? View.GONE : View.VISIBLE);
        mEmojiPalettesView.setVisibility(View.GONE);
        mEmojiPalettesView.stopEmojiPalettes();
    }

    // TODO: Move this boolean to a member of {@link SettingsValues} and reset it
    // at {@link LatinIME#onConfigurationChanged(Configuration)}.
    public boolean hasHardwareKeyboard() {
        // Copied from {@link InputMethodServce#onEvaluateInputViewShown()}.
        final Configuration config = mLatinIME.getResources().getConfiguration();
        final boolean noHardwareKeyboard = config.keyboard == Configuration.KEYBOARD_NOKEYS
                || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
        return !noHardwareKeyboard;
    }

    // Implements {@link KeyboardState.SwitchActions}.
    @Override
    public void setEmojiKeyboard() {
@@ -249,6 +260,14 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
        mEmojiPalettesView.setVisibility(View.VISIBLE);
    }

    public void onToggleEmojiKeyboard() {
        if (isShowingEmojiPalettes()) {
            setAlphabetKeyboard();
        } else {
            setEmojiKeyboard();
        }
    }

    // Implements {@link KeyboardState.SwitchActions}.
    @Override
    public void setSymbolsShiftedKeyboard() {
+21 −0
Original line number Diff line number Diff line
@@ -145,6 +145,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    // If it turns out we need several, it will get grown seamlessly.
    final SparseArray<HardwareEventDecoder> mHardwareEventDecoders = new SparseArray<>(1);

    // TODO: Move these {@link View}s to {@link KeyboardSwitcher}.
    private View mInputView;
    private View mExtractArea;
    private View mKeyPreviewBackingView;
    private SuggestionStripView mSuggestionStripView;
@@ -709,6 +711,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    @Override
    public void setInputView(final View view) {
        super.setInputView(view);
        mInputView = view;
        mExtractArea = getWindow().getWindow().getDecorView()
                .findViewById(android.R.id.extractArea);
        mKeyPreviewBackingView = view.findViewById(R.id.key_preview_backing);
@@ -1079,6 +1082,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        if (visibleKeyboardView == null || !hasSuggestionStripView()) {
            return;
        }
        final boolean hasHardwareKeyboard = mKeyboardSwitcher.hasHardwareKeyboard();
        if (hasHardwareKeyboard && visibleKeyboardView.getVisibility() == View.GONE) {
            // If there is a hardware keyboard and a visible software keyboard view has been hidden,
            // no visual element will be shown on the screen.
            outInsets.touchableInsets = mInputView.getHeight();
            outInsets.visibleTopInsets = mInputView.getHeight();
            return;
        }
        final int adjustedBackingHeight = getAdjustedBackingViewHeight();
        final boolean backingGone = (mKeyPreviewBackingView.getVisibility() == View.GONE);
        final int backingHeight = backingGone ? 0 : adjustedBackingHeight;
@@ -1110,8 +1121,18 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        outInsets.visibleTopInsets = visibleTopY;
    }

    @Override
    public boolean onEvaluateInputViewShown() {
        // Always show {@link InputView}.
        return true;
    }

    @Override
    public boolean onEvaluateFullscreenMode() {
        if (mKeyboardSwitcher.hasHardwareKeyboard()) {
            // If there is a hardware keyboard, disable full screen mode.
            return false;
        }
        // Reread resource value here, because this method is called by the framework as needed.
        final boolean isFullscreenModeAllowed = Settings.readUseFullscreenMode(getResources());
        if (super.onEvaluateFullscreenMode() && isFullscreenModeAllowed) {