Fix not always showing input view with physical keyboard connected
Bug: 17163374 Change-Id: I57f7eeac0c9ac0a15d3d55927e18a2d97849c508main
parent
64dd48e381
commit
88f282de0d
|
@ -18,7 +18,6 @@ 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;
|
||||
|
@ -256,13 +255,12 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
|
|||
}
|
||||
|
||||
public void onToggleEmojiKeyboard() {
|
||||
if (mKeyboardLayoutSet == null) {
|
||||
return;
|
||||
}
|
||||
if (isShowingEmojiPalettes()) {
|
||||
setAlphabetKeyboard();
|
||||
} else {
|
||||
if (mKeyboardLayoutSet == null || !isShowingEmojiPalettes()) {
|
||||
mLatinIME.startShowingInputView();
|
||||
setEmojiKeyboard();
|
||||
} else {
|
||||
mLatinIME.stopShowingInputView();
|
||||
setAlphabetKeyboard();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@ import android.view.WindowManager;
|
|||
import android.view.inputmethod.CompletionInfo;
|
||||
import android.view.inputmethod.CursorAnchorInfo;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.InputMethod;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
@ -87,8 +86,8 @@ import com.android.inputmethod.latin.suggestions.SuggestionStripView;
|
|||
import com.android.inputmethod.latin.suggestions.SuggestionStripViewAccessor;
|
||||
import com.android.inputmethod.latin.utils.ApplicationUtils;
|
||||
import com.android.inputmethod.latin.utils.CapsModeUtils;
|
||||
import com.android.inputmethod.latin.utils.CursorAnchorInfoUtils;
|
||||
import com.android.inputmethod.latin.utils.CoordinateUtils;
|
||||
import com.android.inputmethod.latin.utils.CursorAnchorInfoUtils;
|
||||
import com.android.inputmethod.latin.utils.DialogUtils;
|
||||
import com.android.inputmethod.latin.utils.DistracterFilterCheckingExactMatchesAndSuggestions;
|
||||
import com.android.inputmethod.latin.utils.ImportantNoticeUtils;
|
||||
|
@ -162,6 +161,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
private final SubtypeSwitcher mSubtypeSwitcher;
|
||||
private final SubtypeState mSubtypeState = new SubtypeState();
|
||||
private final SpecialKeyDetector mSpecialKeyDetector;
|
||||
// Working variable for {@link #startShowingInputView()} and
|
||||
// {@link #onEvaluateInputViewShown()}.
|
||||
private boolean mIsExecutingStartShowingInputView;
|
||||
|
||||
// Object for reacting to adding/removing a dictionary pack.
|
||||
private final BroadcastReceiver mDictionaryPackInstallReceiver =
|
||||
|
@ -1187,22 +1189,24 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
outInsets.visibleTopInsets = visibleTopY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onEvaluateInputViewShown() {
|
||||
// Always show {@link InputView}.
|
||||
return true;
|
||||
public void startShowingInputView() {
|
||||
mIsExecutingStartShowingInputView = true;
|
||||
// This {@link #showWindow(boolean)} will eventually call back
|
||||
// {@link #onEvaluateInputViewShown()}.
|
||||
showWindow(true /* showInput */);
|
||||
mIsExecutingStartShowingInputView = false;
|
||||
}
|
||||
|
||||
public void stopShowingInputView() {
|
||||
showWindow(false /* showInput */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onShowInputRequested(final int flags, final boolean configChange) {
|
||||
final SettingsValues settingsValues = mSettings.getCurrent();
|
||||
if ((flags & InputMethod.SHOW_EXPLICIT) == 0 && settingsValues.mHasHardwareKeyboard) {
|
||||
// Even when IME is implicitly shown and physical keyboard is connected, we should
|
||||
// show {@link InputView}.
|
||||
// See {@link InputMethodService#onShowInputRequested(int,boolean)}.
|
||||
public boolean onEvaluateInputViewShown() {
|
||||
if (mIsExecutingStartShowingInputView) {
|
||||
return true;
|
||||
}
|
||||
return super.onShowInputRequested(flags, configChange);
|
||||
return super.onEvaluateInputViewShown();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1221,9 +1225,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
// hack for now. Let's get rid of this once the framework gets fixed.
|
||||
final EditorInfo ei = getCurrentInputEditorInfo();
|
||||
return !(ei != null && ((ei.imeOptions & EditorInfo.IME_FLAG_NO_EXTRACT_UI) != 0));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1273,9 +1276,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
|||
if (null == keyboard) {
|
||||
return CoordinateUtils.newCoordinateArray(codePoints.length,
|
||||
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
|
||||
} else {
|
||||
return keyboard.getCoordinates(codePoints);
|
||||
}
|
||||
return keyboard.getCoordinates(codePoints);
|
||||
}
|
||||
|
||||
// Callback for the {@link SuggestionStripView}, to call when the "add to dictionary" hint is
|
||||
|
|
Loading…
Reference in New Issue