From 25b4dfee29b81abfd232073dfded1e7b00ea3221 Mon Sep 17 00:00:00 2001 From: Mehdi Alizadeh Date: Tue, 5 Jun 2018 16:22:35 -0700 Subject: [PATCH] Hides the keyboard when qsb loses focus in All apps Bug: 80190879 Change-Id: I88da6ef7a88b9dd4fce06e4f2b4592ee6ce39195 --- src/com/android/launcher3/ExtendedEditText.java | 8 ++++++-- .../allapps/search/AllAppsSearchBarController.java | 13 ++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java index 403c8b8ba7..4e0f2e7446 100644 --- a/src/com/android/launcher3/ExtendedEditText.java +++ b/src/com/android/launcher3/ExtendedEditText.java @@ -99,6 +99,10 @@ public class ExtendedEditText extends EditText { mShowImeAfterFirstLayout = !showSoftInput(); } + public void hideKeyboard() { + UiThreadHelper.hideKeyboardAsync(getContext(), getWindowToken()); + } + private boolean showSoftInput() { return requestFocus() && ((InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE)) @@ -106,7 +110,7 @@ public class ExtendedEditText extends EditText { } public void dispatchBackKey() { - UiThreadHelper.hideKeyboardAsync(getContext(), getWindowToken()); + hideKeyboard(); if (mBackKeyListener != null) { mBackKeyListener.onBackKey(); } @@ -135,6 +139,6 @@ public class ExtendedEditText extends EditText { nextFocus.requestFocus(); } } - UiThreadHelper.hideKeyboardAsync(getContext(), getWindowToken()); + hideKeyboard(); } } diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java index e83904fe86..dcc45545a4 100644 --- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java +++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java @@ -21,6 +21,8 @@ import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnFocusChangeListener; import android.view.inputmethod.EditorInfo; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; @@ -37,7 +39,8 @@ import java.util.ArrayList; * An interface to a search box that AllApps can command. */ public class AllAppsSearchBarController - implements TextWatcher, OnEditorActionListener, ExtendedEditText.OnBackKeyListener { + implements TextWatcher, OnEditorActionListener, ExtendedEditText.OnBackKeyListener, + OnFocusChangeListener { protected Launcher mLauncher; protected Callbacks mCb; @@ -62,6 +65,7 @@ public class AllAppsSearchBarController mInput.addTextChangedListener(this); mInput.setOnEditorActionListener(this); mInput.setOnBackKeyListener(this); + mInput.setOnFocusChangeListener(this); mSearchAlgorithm = searchAlgorithm; } @@ -123,6 +127,13 @@ public class AllAppsSearchBarController return false; } + @Override + public void onFocusChange(View view, boolean hasFocus) { + if (!hasFocus) { + mInput.hideKeyboard(); + } + } + /** * Resets the search bar state. */