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

Commit f9a1ff41 authored by Adam Powell's avatar Adam Powell Committed by Android Git Automerger
Browse files

am e7c02ef4: Merge "Fix bug 2973252 - Make overscroll glow respect...

am e7c02ef4: Merge "Fix bug 2973252 - Make overscroll glow respect ifContentScrolls" into gingerbread

Merge commit 'e7c02ef4' into gingerbread-plus-aosp

* commit 'e7c02ef4':
  Fix bug 2973252 - Make overscroll glow respect ifContentScrolls
parents af7a7c34 e7c02ef4
Loading
Loading
Loading
Loading
+26 −5
Original line number Diff line number Diff line
@@ -658,6 +658,18 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
        super.setOverscrollMode(mode);
    }

    /**
     * @return true if all list content currently fits within the view boundaries
     */
    private boolean contentFits() {
        final int childCount = getChildCount();
        if (childCount != mItemCount) {
            return false;
        }

        return getChildAt(0).getTop() >= 0 && getChildAt(childCount - 1).getBottom() <= mBottom;
    }

    /**
     * Enables fast scrolling by letting the user quickly scroll through lists by
     * dragging the fast scroll thumb. The adapter attached to the list may want
@@ -2221,8 +2233,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                                // Don't allow overfling if we're at the edge.
                                mVelocityTracker.clear();
                            }

                            final int overscrollMode = getOverscrollMode();
                            if (overscrollMode == OVERSCROLL_ALWAYS ||
                                    (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS &&
                                            !contentFits())) {
                                mTouchMode = TOUCH_MODE_OVERSCROLL;
                            if (mEdgeGlowTop != null) {
                                if (rawDeltaY > 0) {
                                    mEdgeGlowTop.onPull((float) overscroll / getHeight());
                                } else if (rawDeltaY < 0) {
@@ -2275,7 +2291,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                    } else {
                        overscrollBy(0, -incrementalDeltaY, 0, mScrollY, 0, 0,
                                0, mOverscrollDistance, true);
                        if (mEdgeGlowTop != null) {
                        final int overscrollMode = getOverscrollMode();
                        if (overscrollMode == OVERSCROLL_ALWAYS ||
                                (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS &&
                                        !contentFits())) {
                            if (rawDeltaY > 0) {
                                mEdgeGlowTop.onPull((float) -incrementalDeltaY / getHeight());
                            } else if (rawDeltaY < 0) {
@@ -2757,8 +2776,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te

        void edgeReached(int delta) {
            mScroller.notifyVerticalEdgeReached(mScrollY, 0, mOverflingDistance);
            final int overscrollMode = getOverscrollMode();
            if (overscrollMode == OVERSCROLL_ALWAYS ||
                    (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) {
                mTouchMode = TOUCH_MODE_OVERFLING;
            if (mEdgeGlowTop != null) {
                final int vel = (int) mScroller.getCurrVelocity();
                if (delta > 0) {
                    mEdgeGlowTop.onAbsorb(vel);
+17 −9
Original line number Diff line number Diff line
@@ -538,6 +538,9 @@ public class HorizontalScrollView extends FrameLayout {
                    }
                    onScrollChanged(mScrollX, mScrollY, oldX, oldY);

                    final int overscrollMode = getOverscrollMode();
                    if (overscrollMode == OVERSCROLL_ALWAYS ||
                            (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) {
                        final int pulledToX = oldX + deltaX;
                        if (pulledToX < 0) {
                            mEdgeGlowLeft.onPull((float) deltaX / getWidth());
@@ -545,6 +548,7 @@ public class HorizontalScrollView extends FrameLayout {
                            mEdgeGlowRight.onPull((float) deltaX / getWidth());
                        }
                    }
                }
                break;
            case MotionEvent.ACTION_UP:
                if (mIsBeingDragged) {
@@ -1091,12 +1095,16 @@ public class HorizontalScrollView extends FrameLayout {
                onScrollChanged(mScrollX, mScrollY, oldX, oldY);

                final int range = getScrollRange();
                final int overscrollMode = getOverscrollMode();
                if (overscrollMode == OVERSCROLL_ALWAYS ||
                        (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) {
                    if (x < 0 && oldX >= 0) {
                        mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity());
                    } else if (x > range && oldX <= range) {
                        mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity());
                    }
                }
            }
            awakenScrollBars();

            // Keep on drawing until the animation has finished.
+17 −9
Original line number Diff line number Diff line
@@ -533,6 +533,9 @@ public class ScrollView extends FrameLayout {
                    }
                    onScrollChanged(mScrollX, mScrollY, oldX, oldY);

                    final int overscrollMode = getOverscrollMode();
                    if (overscrollMode == OVERSCROLL_ALWAYS ||
                            (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) {
                        final int pulledToY = oldY + deltaY;
                        if (pulledToY < 0) {
                            mEdgeGlowTop.onPull((float) deltaY / getHeight());
@@ -540,6 +543,7 @@ public class ScrollView extends FrameLayout {
                            mEdgeGlowBottom.onPull((float) deltaY / getHeight());
                        }
                    }
                }
                break;
            case MotionEvent.ACTION_UP: 
                if (mIsBeingDragged) {
@@ -1090,12 +1094,16 @@ public class ScrollView extends FrameLayout {
                onScrollChanged(mScrollX, mScrollY, oldX, oldY);

                final int range = getScrollRange();
                final int overscrollMode = getOverscrollMode();
                if (overscrollMode == OVERSCROLL_ALWAYS ||
                        (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) {
                    if (y < 0 && oldY >= 0) {
                        mEdgeGlowTop.onAbsorb((int) mScroller.getCurrVelocity());
                    } else if (y > range && oldY <= range) {
                        mEdgeGlowBottom.onAbsorb((int) mScroller.getCurrVelocity());
                    }
                }
            }
            awakenScrollBars();

            // Keep on drawing until the animation has finished.