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