[HS1] Save some data in startInputView
Bug: 8152758 Change-Id: Ic57d3918b08e775769d4ba5d73ba5c31231e0d6amain
parent
85b7b967b7
commit
f1accd4f04
|
@ -752,8 +752,30 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
loadKeyboard();
|
loadKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that holds information to pass from onStartInputInternal to onStartInputViewInternal
|
||||||
|
*
|
||||||
|
* OnStartInput needs to reload the settings and that will prevent onStartInputViewInternal
|
||||||
|
* from comparing the old settings with the new ones, so we use this memory to pass the
|
||||||
|
* necessary information along.
|
||||||
|
*/
|
||||||
|
private static class EditorChangeInfo {
|
||||||
|
public final boolean mIsSameInputType;
|
||||||
|
public final boolean mHasSameOrientation;
|
||||||
|
public EditorChangeInfo(final boolean isSameInputType, final boolean hasSameOrientation) {
|
||||||
|
mIsSameInputType = isSameInputType;
|
||||||
|
mHasSameOrientation = hasSameOrientation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private EditorChangeInfo mLastEditorChangeInfo;
|
||||||
|
|
||||||
private void onStartInputInternal(final EditorInfo editorInfo, final boolean restarting) {
|
private void onStartInputInternal(final EditorInfo editorInfo, final boolean restarting) {
|
||||||
super.onStartInput(editorInfo, restarting);
|
super.onStartInput(editorInfo, restarting);
|
||||||
|
SettingsValues currentSettingsValues = mSettings.getCurrent();
|
||||||
|
mLastEditorChangeInfo = new EditorChangeInfo(
|
||||||
|
currentSettingsValues.isSameInputType(editorInfo),
|
||||||
|
currentSettingsValues.hasSameOrientation(getResources().getConfiguration()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -763,9 +785,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
final KeyboardSwitcher switcher = mKeyboardSwitcher;
|
final KeyboardSwitcher switcher = mKeyboardSwitcher;
|
||||||
switcher.updateKeyboardTheme();
|
switcher.updateKeyboardTheme();
|
||||||
final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView();
|
final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView();
|
||||||
// If we are starting input in a different text field from before, we'll have to reload
|
|
||||||
// settings, so currentSettingsValues can't be final.
|
|
||||||
SettingsValues currentSettingsValues = mSettings.getCurrent();
|
|
||||||
|
|
||||||
if (editorInfo == null) {
|
if (editorInfo == null) {
|
||||||
Log.e(TAG, "Null EditorInfo in onStartInputView()");
|
Log.e(TAG, "Null EditorInfo in onStartInputView()");
|
||||||
|
@ -808,7 +827,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
accessUtils.onStartInputViewInternal(mainKeyboardView, editorInfo, restarting);
|
accessUtils.onStartInputViewInternal(mainKeyboardView, editorInfo, restarting);
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean inputTypeChanged = !currentSettingsValues.isSameInputType(editorInfo);
|
final boolean inputTypeChanged = !mLastEditorChangeInfo.mIsSameInputType;
|
||||||
final boolean isDifferentTextField = !restarting || inputTypeChanged;
|
final boolean isDifferentTextField = !restarting || inputTypeChanged;
|
||||||
if (isDifferentTextField) {
|
if (isDifferentTextField) {
|
||||||
mSubtypeSwitcher.updateParametersOnStartInputView();
|
mSubtypeSwitcher.updateParametersOnStartInputView();
|
||||||
|
@ -853,13 +872,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
|
||||||
canReachInputConnection = true;
|
canReachInputConnection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDifferentTextField ||
|
if (isDifferentTextField || !mLastEditorChangeInfo.mHasSameOrientation) {
|
||||||
!currentSettingsValues.hasSameOrientation(getResources().getConfiguration())) {
|
|
||||||
loadSettings();
|
loadSettings();
|
||||||
}
|
}
|
||||||
|
final SettingsValues currentSettingsValues = mSettings.getCurrent();
|
||||||
if (isDifferentTextField) {
|
if (isDifferentTextField) {
|
||||||
mainKeyboardView.closing();
|
mainKeyboardView.closing();
|
||||||
currentSettingsValues = mSettings.getCurrent();
|
|
||||||
|
|
||||||
if (currentSettingsValues.mAutoCorrectionEnabledPerUserSettings) {
|
if (currentSettingsValues.mAutoCorrectionEnabledPerUserSettings) {
|
||||||
suggest.setAutoCorrectionThreshold(
|
suggest.setAutoCorrectionThreshold(
|
||||||
|
|
Loading…
Reference in New Issue