diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java
index c59f25d..f94a3c5 100644
--- a/src/com/android/launcher3/ExtendedEditText.java
+++ b/src/com/android/launcher3/ExtendedEditText.java
@@ -159,4 +159,14 @@
             listener.onFocusChange(this, focused);
         }
     }
+
+    /**
+     * Save the input, suggestion, hint states when it's on focus, and set to unfocused states.
+     */
+    public void saveFocusedStateAndUpdateToUnfocusedState() {}
+
+    /**
+     * Restore to the previous saved focused state.
+     */
+    public void restoreToFocusedState() {}
 }
diff --git a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
index 92e29bb..229d8f8 100644
--- a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
@@ -41,12 +41,23 @@
                 public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                     int scrolledOffset = recyclerView.computeVerticalScrollOffset();
                     ExtendedEditText input = mSearchUiManager.getEditText();
-                    // Scroll up and scroll to top
-                    if (dy < 0 && scrolledOffset == 0 && input != null) {
-                        boolean isImeEnabledOnSwipeUp = Launcher.getLauncher(mActivityContext)
-                                .getSearchConfig().isImeEnabledOnSwipeUp();
-                        if (isImeEnabledOnSwipeUp || !TextUtils.isEmpty(input.getText())) {
-                            input.showKeyboard();
+                    if (input != null) {
+                        // Save the input box state on scroll down
+                        if (dy > 0) {
+                            input.saveFocusedStateAndUpdateToUnfocusedState();
+                        }
+
+                        // Scroll up and scroll to top
+                        if (dy < 0 && scrolledOffset == 0) {
+                            // Show keyboard
+                            boolean isImeEnabledOnSwipeUp = Launcher.getLauncher(mActivityContext)
+                                    .getSearchConfig().isImeEnabledOnSwipeUp();
+                            if (isImeEnabledOnSwipeUp || !TextUtils.isEmpty(input.getText())) {
+                                input.showKeyboard();
+                            }
+
+                            // Restore state in input box
+                            input.restoreToFocusedState();
                         }
                     }
                 }
