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

Commit 21990922 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Fix AbsListView scrolling behavior at edges." into froyo

parents 25642f0b b7795432
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -2059,12 +2059,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                    deltaY -= mMotionCorrection;
                    int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : deltaY;
                    
                    int motionViewPrevTop = 0;
                    View motionView = this.getChildAt(mMotionPosition - mFirstPosition);
                    if (motionView != null) {
                        motionViewPrevTop = motionView.getTop();
                    }
                    
                    // No need to do all this work if we're not going to move anyway
                    boolean atEdge = false;
                    if (incrementalDeltaY != 0) {
@@ -2072,14 +2066,19 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                    }

                    // Check to see if we have bumped into the scroll limit
                    motionView = this.getChildAt(mMotionPosition - mFirstPosition);
                    if (motionView != null) {
                        // Check if the top of the motion view is where it is
                        // supposed to be
                        final int motionViewRealTop = motionView.getTop();
                        if (atEdge) {
                            invalidate();
                    if (atEdge && getChildCount() > 0) {
                        // Treat this like we're starting a new scroll from the current
                        // position. This will let the user start scrolling back into
                        // content immediately rather than needing to scroll back to the
                        // point where they hit the limit first.
                        int motionPosition = findMotionRow(y);
                        if (motionPosition >= 0) {
                            final View motionView = getChildAt(motionPosition - mFirstPosition);
                            mMotionViewOriginalTop = motionView.getTop();
                        }
                        mMotionY = y;
                        mMotionPosition = motionPosition;
                        invalidate();
                    }
                    mLastY = y;
                }