Loading core/java/android/widget/AutoCompleteTextView.java +47 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,9 @@ import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.view.inspector.InspectableProperty; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; import android.window.WindowOnBackInvokedDispatcher; import com.android.internal.R; Loading Loading @@ -143,6 +146,14 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe @UnsupportedAppUsage private PopupDataSetObserver mObserver; private boolean mBackCallbackRegistered; /** Handles back invocation */ private final OnBackInvokedCallback mBackCallback = () -> { if (isPopupShowing()) { dismissDropDown(); } }; /** * Constructs a new auto-complete text view with the given context's theme. * Loading Loading @@ -272,6 +283,9 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } mPopup = new ListPopupWindow(mPopupContext, attrs, defStyleAttr, defStyleRes); mPopup.setOnDismissListener(() -> { unregisterOnBackInvokedCallback(); }); mPopup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW); mPopup.setListSelector(popupListSelector); Loading Loading @@ -734,6 +748,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe wrappedListener = new PopupWindow.OnDismissListener() { @Override public void onDismiss() { dismissListener.onDismiss(); unregisterOnBackInvokedCallback(); } }; } Loading Loading @@ -1315,6 +1330,9 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mPopup.setListItemExpandMax(EXPAND_MAX); } mPopup.show(); if (!mPopup.isDropDownAlwaysVisible()) { registerOnBackInvokedCallback(); } mPopup.getListView().setOverScrollMode(View.OVER_SCROLL_ALWAYS); } Loading Loading @@ -1414,6 +1432,35 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return AutoCompleteTextView.class.getName(); } private void unregisterOnBackInvokedCallback() { if (!mBackCallbackRegistered) { return; } OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher(); if (dispatcher == null) { return; } if (WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mPopupContext)) { dispatcher.unregisterOnBackInvokedCallback(mBackCallback); } mBackCallbackRegistered = false; } private void registerOnBackInvokedCallback() { if (mBackCallbackRegistered) { return; } OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher(); if (dispatcher == null) { return; } if (WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mPopupContext)) { dispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_OVERLAY, mBackCallback); } mBackCallbackRegistered = true; } private class DropDownItemClickListener implements AdapterView.OnItemClickListener { public void onItemClick(AdapterView parent, View v, int position, long id) { performCompletion(v, position, id); Loading Loading
core/java/android/widget/AutoCompleteTextView.java +47 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,9 @@ import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.view.inspector.InspectableProperty; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; import android.window.WindowOnBackInvokedDispatcher; import com.android.internal.R; Loading Loading @@ -143,6 +146,14 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe @UnsupportedAppUsage private PopupDataSetObserver mObserver; private boolean mBackCallbackRegistered; /** Handles back invocation */ private final OnBackInvokedCallback mBackCallback = () -> { if (isPopupShowing()) { dismissDropDown(); } }; /** * Constructs a new auto-complete text view with the given context's theme. * Loading Loading @@ -272,6 +283,9 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } mPopup = new ListPopupWindow(mPopupContext, attrs, defStyleAttr, defStyleRes); mPopup.setOnDismissListener(() -> { unregisterOnBackInvokedCallback(); }); mPopup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW); mPopup.setListSelector(popupListSelector); Loading Loading @@ -734,6 +748,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe wrappedListener = new PopupWindow.OnDismissListener() { @Override public void onDismiss() { dismissListener.onDismiss(); unregisterOnBackInvokedCallback(); } }; } Loading Loading @@ -1315,6 +1330,9 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mPopup.setListItemExpandMax(EXPAND_MAX); } mPopup.show(); if (!mPopup.isDropDownAlwaysVisible()) { registerOnBackInvokedCallback(); } mPopup.getListView().setOverScrollMode(View.OVER_SCROLL_ALWAYS); } Loading Loading @@ -1414,6 +1432,35 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return AutoCompleteTextView.class.getName(); } private void unregisterOnBackInvokedCallback() { if (!mBackCallbackRegistered) { return; } OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher(); if (dispatcher == null) { return; } if (WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mPopupContext)) { dispatcher.unregisterOnBackInvokedCallback(mBackCallback); } mBackCallbackRegistered = false; } private void registerOnBackInvokedCallback() { if (mBackCallbackRegistered) { return; } OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher(); if (dispatcher == null) { return; } if (WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mPopupContext)) { dispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_OVERLAY, mBackCallback); } mBackCallbackRegistered = true; } private class DropDownItemClickListener implements AdapterView.OnItemClickListener { public void onItemClick(AdapterView parent, View v, int position, long id) { performCompletion(v, position, id); Loading