Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f8e5ec7 authored by Zemiao Zhu's avatar Zemiao Zhu
Browse files

Fix SearchView UI response to first character delayed.

Bug: 155912309
Test: atest DocumentsUIGoogleTests
Change-Id: Ia43f7648c7e14cce0ad22f45807b1102d2ab041d
parent 0b814377
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -175,10 +175,6 @@ public abstract class BaseActivity
             */
            @Override
            public void onSearchChanged(@Nullable String query) {
                if (query != null) {
                    SearchFragment.dismissFragment(getSupportFragmentManager());
                }

                if (mSearchManager.isSearching()) {
                    Metrics.logSearchMode(query != null, mSearchManager.hasCheckedChip());
                    if (mInjector.pickResult != null) {
@@ -227,10 +223,11 @@ public abstract class BaseActivity
                final boolean isInitailSearch
                        = !TextUtils.isEmpty(mSearchManager.getCurrentSearch())
                        && TextUtils.isEmpty(mSearchManager.getSearchViewText());
                if (hasFocus && (SearchFragment.get(getSupportFragmentManager()) == null)
                        && !isInitailSearch) {
                if (hasFocus) {
                    if (!isInitailSearch) {
                        SearchFragment.showFragment(getSupportFragmentManager(),
                                mSearchManager.getSearchViewText());
                    }
                } else {
                    SearchFragment.dismissFragment(getSupportFragmentManager());
                }
+3 −5
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.documentsui.queries;

import android.content.Context;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -104,6 +103,7 @@ public class SearchFragment extends Fragment{
        final BaseActivity activity = (BaseActivity) getActivity();
        final Injector injector = activity.getInjector();
        mSearchViewManager = injector.searchManager;
        mSearchViewManager.setFragmentManager(this.getParentFragmentManager());

        final String currentQuery = getArguments().getString(KEY_QUERY, "");

@@ -124,12 +124,11 @@ public class SearchFragment extends Fragment{
        View toolbar = getActivity().findViewById(R.id.toolbar_background_layout);
        if (toolbar != null) {
            // Align top with the bottom of search bar.
            Rect rect = new Rect();
            toolbar.getGlobalVisibleRect(rect);
            FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT);
            layoutParams.setMargins(0, rect.height(), 0, 0);
            layoutParams.setMargins(0, getResources().getDimensionPixelSize(
                    R.dimen.action_bar_space_height), 0, 0);
            getView().setLayoutParams(layoutParams);
        }

@@ -152,7 +151,6 @@ public class SearchFragment extends Fragment{
        mSearchViewManager.setHistorySearch();
        mSearchViewManager.setCurrentSearch(item);
        mSearchViewManager.restoreSearch(true);
        dismiss();
    }

    private void dismiss() {
+17 −2
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.SearchView.OnQueryTextListener;
import androidx.fragment.app.FragmentManager;

import com.android.documentsui.MetricConsts;
import com.android.documentsui.Metrics;
@@ -89,6 +90,7 @@ public class SearchViewManager implements
    private @Nullable Menu mMenu;
    private @Nullable MenuItem mMenuItem;
    private @Nullable SearchView mSearchView;
    private @Nullable FragmentManager mFragmentManager;

    public SearchViewManager(
            SearchManagerListener listener,
@@ -244,6 +246,10 @@ public class SearchViewManager implements
        restoreSearch(true);
    }

    public void setFragmentManager(FragmentManager fragmentManager) {
        mFragmentManager = fragmentManager;
    }

    /**
     * Used to hide menu icons, when the search is being restored. Needed because search restoration
     * is done before onPrepareOptionsMenu(Menu menu) that is overriding the icons visibility.
@@ -511,8 +517,17 @@ public class SearchViewManager implements
    @Override
    public boolean onQueryTextChange(String newText) {
        //Skip first search when search expanded
        if (!(mCurrentSearch == null && newText.isEmpty())) {
        if (mCurrentSearch == null && newText.isEmpty()) {
            return true;
        }

        performSearch(newText);
        if (mFragmentManager != null) {
            if (!newText.isEmpty()) {
                SearchFragment.dismissFragment(mFragmentManager);
            } else {
                SearchFragment.showFragment(mFragmentManager, "");
            }
        }
        return true;
    }