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

Commit 7f8aef6d authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Heed the focusability flag in SearchView and set the default to true.

Bug: 3385804

Also, allow navigation through keyboard.

Change-Id: I444f142518172b35f33c2a5129179ac996d80dc7
parent aaa55d3f
Loading
Loading
Loading
Loading
+21 −7
Original line number Diff line number Diff line
@@ -214,6 +214,8 @@ public class SearchView extends LinearLayout {
            }
        });

        boolean focusable = true;

        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SearchView, 0, 0);
        setIconifiedByDefault(a.getBoolean(R.styleable.SearchView_iconifiedByDefault, true));
        int maxWidth = a.getDimensionPixelSize(R.styleable.SearchView_maxWidth, -1);
@@ -226,6 +228,11 @@ public class SearchView extends LinearLayout {
        }
        a.recycle();

        a = context.obtainStyledAttributes(attrs, R.styleable.View, 0, 0);
        focusable = a.getBoolean(R.styleable.View_focusable, focusable);
        a.recycle();
        setFocusable(focusable);

        // Save voice intent for later queries/launching
        mVoiceWebSearchIntent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
        mVoiceWebSearchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -259,10 +266,18 @@ public class SearchView extends LinearLayout {
    /** @hide */
    @Override
    public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
        if (mClearingFocus || isIconified()) return false;
        // Don't accept focus if in the middle of clearing focus
        if (mClearingFocus) return false;
        // Check if SearchView is focusable.
        if (!isFocusable()) return false;
        // If it is not iconified, then give the focus to the text field
        if (!isIconified()) {
            boolean result = mQueryTextView.requestFocus(direction, previouslyFocusedRect);
        if (result) updateViewsVisibility(mIconifiedByDefault);
            if (result) updateViewsVisibility(false);
            return result;
        } else {
            return super.requestFocus(direction, previouslyFocusedRect);
        }
    }

    /** @hide */
@@ -527,7 +542,6 @@ public class SearchView extends LinearLayout {
        updateCloseButton();
        updateVoiceButton(!hasText);
        updateSubmitArea();
        requestLayout();
    }

    private boolean hasVoiceSearch() {
@@ -903,8 +917,8 @@ public class SearchView extends LinearLayout {
    }

    private void onSearchClicked() {
        mQueryTextView.requestFocus();
        updateViewsVisibility(false);
        mQueryTextView.requestFocus();
        setImeVisibility(true);
        if (mOnSearchClickListener != null) {
            mOnSearchClickListener.onClick(this);
+3 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@
                android:layout_gravity="center_vertical"
                android:background="?android:attr/selectableItemBackground"
                android:src="?android:attr/searchViewCloseIcon"
                android:focusable="true"
            />

        </LinearLayout>
@@ -127,6 +128,7 @@
            android:background="?android:attr/selectableItemBackground"
            android:src="?android:attr/searchViewGoIcon"
            android:visibility="gone"
            android:focusable="true"
        />

        <ImageView
@@ -139,6 +141,7 @@
            android:src="?android:attr/searchViewVoiceIcon"
            android:background="?android:attr/selectableItemBackground"
            android:visibility="gone"
            android:focusable="true"
        />
    </LinearLayout>
</LinearLayout>