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

Commit 7832cd54 authored by Ben Kwa's avatar Ben Kwa Committed by Android (Google) Code Review
Browse files

Merge "Switch to smooth scrolling when zooming to home/end."

parents 6048d53f 16459ff8
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -945,17 +945,28 @@ public final class MultiSelectManager implements View.OnKeyListener {
            if (vh != null) {
                vh.itemView.requestFocus();
            } else {
                // Don't smooth scroll; that taxes the system unnecessarily and makes the scroll
                // handling logic below more complicated.  See b/24865658.
                mView.scrollToPosition(pos);
                mView.smoothScrollToPosition(pos);
                // Set a one-time listener to request focus when the scroll has completed.
                mView.addOnScrollListener(
                    new RecyclerView.OnScrollListener() {
                        @Override
                        public void onScrolled(RecyclerView view, int dx, int dy) {
                            view.findViewHolderForAdapterPosition(pos).itemView.requestFocus();
                        public void onScrollStateChanged (RecyclerView view, int newState) {
                            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                                // When scrolling stops, find the item and focus it.
                                RecyclerView.ViewHolder vh =
                                        view.findViewHolderForAdapterPosition(pos);
                                if (vh != null) {
                                    vh.itemView.requestFocus();
                                } else {
                                    // This might happen in weird corner cases, e.g. if the user is
                                    // scrolling while a delete operation is in progress.  In that
                                    // case, just don't attempt to focus the missing item.
                                    Log.w(
                                        TAG, "Unable to focus position " + pos + " after a scroll");
                                }
                                view.removeOnScrollListener(this);
                            }
                        }
                    });
            }
        }