diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index dd47bcdb2a635..12bc169153a42 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -6406,6 +6406,12 @@ public final class ViewRootImpl implements ViewParent, // Make sure the fallback event policy sees all keys that will be // delivered to the view hierarchy. mFallbackEventHandler.preDispatchKeyEvent(event); + + // Reset last tracked MotionEvent click toolType. + if (event.getAction() == KeyEvent.ACTION_DOWN) { + mLastClickToolType = MotionEvent.TOOL_TYPE_UNKNOWN; + } + return FORWARD; } diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index a01decca52240..8d3cf6d890d24 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -2331,9 +2331,6 @@ public final class InputMethodManager { editorInfo.packageName = view.getContext().getOpPackageName(); editorInfo.autofillId = view.getAutofillId(); editorInfo.fieldId = view.getId(); - synchronized (mH) { - editorInfo.setInitialToolType(mCurRootView.getLastClickToolType()); - } InputConnection ic = view.onCreateInputConnection(editorInfo); if (DEBUG) Log.v(TAG, "Starting input: editorInfo=" + editorInfo + " ic=" + ic); @@ -2373,6 +2370,8 @@ public final class InputMethodManager { startInputFlags |= StartInputFlags.INITIAL_CONNECTION; } + editorInfo.setInitialToolType(mCurRootView.getLastClickToolType()); + // Hook 'em up and let 'er rip. mCurrentEditorInfo = editorInfo.createCopyInternal(); // Store the previously served connection so that we can determine whether it is safe