Merge "Revert "Removed lock of showInputMethodMenu when showing the dialog"" into udc-dev
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.server.inputmethod;
|
|||||||
import static com.android.server.inputmethod.InputMethodManagerService.DEBUG;
|
import static com.android.server.inputmethod.InputMethodManagerService.DEBUG;
|
||||||
import static com.android.server.inputmethod.InputMethodUtils.NOT_A_SUBTYPE_ID;
|
import static com.android.server.inputmethod.InputMethodUtils.NOT_A_SUBTYPE_ID;
|
||||||
|
|
||||||
|
import android.annotation.Nullable;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
@@ -65,8 +66,8 @@ final class InputMethodMenuController {
|
|||||||
private boolean mShowImeWithHardKeyboard;
|
private boolean mShowImeWithHardKeyboard;
|
||||||
|
|
||||||
@GuardedBy("ImfLock.class")
|
@GuardedBy("ImfLock.class")
|
||||||
private final InputMethodDialogWindowContext mDialogWindowContext =
|
@Nullable
|
||||||
new InputMethodDialogWindowContext();
|
private InputMethodDialogWindowContext mDialogWindowContext;
|
||||||
|
|
||||||
InputMethodMenuController(InputMethodManagerService service) {
|
InputMethodMenuController(InputMethodManagerService service) {
|
||||||
mService = service;
|
mService = service;
|
||||||
@@ -124,11 +125,13 @@ final class InputMethodMenuController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mDialogWindowContext == null) {
|
||||||
|
mDialogWindowContext = new InputMethodDialogWindowContext();
|
||||||
|
}
|
||||||
final Context dialogWindowContext = mDialogWindowContext.get(displayId);
|
final Context dialogWindowContext = mDialogWindowContext.get(displayId);
|
||||||
mDialogBuilder = new AlertDialog.Builder(dialogWindowContext);
|
mDialogBuilder = new AlertDialog.Builder(dialogWindowContext);
|
||||||
mDialogBuilder.setOnCancelListener(dialog -> hideInputMethodMenu());
|
mDialogBuilder.setOnCancelListener(dialog -> hideInputMethodMenu());
|
||||||
|
|
||||||
// TODO(b/277061090): refactor UI components should not be created while holding a lock.
|
|
||||||
final Context dialogContext = mDialogBuilder.getContext();
|
final Context dialogContext = mDialogBuilder.getContext();
|
||||||
final TypedArray a = dialogContext.obtainStyledAttributes(null,
|
final TypedArray a = dialogContext.obtainStyledAttributes(null,
|
||||||
com.android.internal.R.styleable.DialogPreference,
|
com.android.internal.R.styleable.DialogPreference,
|
||||||
@@ -196,11 +199,10 @@ final class InputMethodMenuController {
|
|||||||
attrs.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
|
attrs.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
|
||||||
attrs.setTitle("Select input method");
|
attrs.setTitle("Select input method");
|
||||||
w.setAttributes(attrs);
|
w.setAttributes(attrs);
|
||||||
// TODO(b/277062834) decouple/remove dependency on IMMS
|
|
||||||
mService.updateSystemUiLocked();
|
mService.updateSystemUiLocked();
|
||||||
mService.sendOnNavButtonFlagsChangedLocked();
|
mService.sendOnNavButtonFlagsChangedLocked();
|
||||||
|
mSwitchingDialog.show();
|
||||||
}
|
}
|
||||||
mSwitchingDialog.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isScreenLocked() {
|
private boolean isScreenLocked() {
|
||||||
@@ -274,7 +276,6 @@ final class InputMethodMenuController {
|
|||||||
private final int mTextViewResourceId;
|
private final int mTextViewResourceId;
|
||||||
private final List<ImeSubtypeListItem> mItemsList;
|
private final List<ImeSubtypeListItem> mItemsList;
|
||||||
public int mCheckedItem;
|
public int mCheckedItem;
|
||||||
|
|
||||||
private ImeSubtypeListAdapter(Context context, int textViewResourceId,
|
private ImeSubtypeListAdapter(Context context, int textViewResourceId,
|
||||||
List<ImeSubtypeListItem> itemsList, int checkedItem) {
|
List<ImeSubtypeListItem> itemsList, int checkedItem) {
|
||||||
super(context, textViewResourceId, itemsList);
|
super(context, textViewResourceId, itemsList);
|
||||||
|
|||||||
Reference in New Issue
Block a user