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

Commit df709d9a authored by Liam Lee Pong Lam's avatar Liam Lee Pong Lam Committed by Android (Google) Code Review
Browse files

Merge "[Launcher3] Hide keyboard when fastscroller scrolling down and keyboard shown" into main

parents 8e537d1e e4800991
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -109,6 +109,13 @@ public class RecyclerViewFastScroller extends View {

    private float mLastTouchY;
    private boolean mIsDragging;
    /**
     * Tracks whether a keyboard hide request has been sent due to downward scrolling.
     * <p>
     * Set to true when scrolling down and reset when scrolling up to prevents redundant hide
     * requests during continuous downward scrolls.
     */
    private boolean mRequestedHideKeyboard;
    private boolean mIsThumbDetached;
    private final boolean mCanThumbDetach;
    private boolean mIgnoreDragGesture;
@@ -127,6 +134,7 @@ public class RecyclerViewFastScroller extends View {

    protected FastScrollRecyclerView mRv;
    private RecyclerView.OnScrollListener mOnScrollListener;
    private final ActivityContext mActivityContext;

    private int mDownX;
    private int mDownY;
@@ -163,7 +171,7 @@ public class RecyclerViewFastScroller extends View {
        mDeltaThreshold = res.getDisplayMetrics().density * SCROLL_DELTA_THRESHOLD_DP;
        mScrollbarLeftOffsetTouchDelegate = res.getDisplayMetrics().density
                * SCROLLBAR_LEFT_OFFSET_TOUCH_DELEGATE_DP;

        mActivityContext = ActivityContext.lookupContext(context);
        TypedArray ta =
                context.obtainStyledAttributes(attrs, R.styleable.RecyclerViewFastScroller, defStyleAttr, 0);
        mCanThumbDetach = ta.getBoolean(R.styleable.RecyclerViewFastScroller_canThumbDetach, false);
@@ -248,6 +256,7 @@ public class RecyclerViewFastScroller extends View {
                mDownX = x;
                mDownY = mLastY = y;
                mDownTimeStampMillis = ev.getDownTime();
                mRequestedHideKeyboard = false;

                if ((Math.abs(mDy) < mDeltaThreshold &&
                        mRv.getScrollState() != SCROLL_STATE_IDLE)) {
@@ -260,6 +269,7 @@ public class RecyclerViewFastScroller extends View {
                }
                break;
            case MotionEvent.ACTION_MOVE:
                boolean isScrollingDown = y > mLastY;
                mLastY = y;
                int absDeltaY = Math.abs(y - mDownY);
                int absDeltaX = Math.abs(x - mDownX);
@@ -275,6 +285,14 @@ public class RecyclerViewFastScroller extends View {
                    }
                }
                if (mIsDragging) {
                    if (isScrollingDown) {
                        if (!mRequestedHideKeyboard) {
                            mActivityContext.hideKeyboard();
                        }
                        mRequestedHideKeyboard = true;
                    } else {
                        mRequestedHideKeyboard = false;
                    }
                    updateFastScrollSectionNameAndThumbOffset(y);
                }
                break;
@@ -294,7 +312,6 @@ public class RecyclerViewFastScroller extends View {
    }

    private void calcTouchOffsetAndPrepToFastScroll(int downY, int lastY) {
        ActivityContext.lookupContext(getContext()).hideKeyboard();
        mIsDragging = true;
        if (mCanThumbDetach) {
            mIsThumbDetached = true;