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

Commit 998c6777 authored by Mindy Pereira's avatar Mindy Pereira Committed by Android (Google) Code Review
Browse files

Merge "Never show overscroll if the page scrolls at all." into gingerbread

parents 868322ce 22c5ff22
Loading
Loading
Loading
Loading
+55 −34
Original line number Original line Diff line number Diff line
@@ -784,6 +784,11 @@ public class WebView extends AbsoluteLayout
    private EdgeGlow mEdgeGlowBottom;
    private EdgeGlow mEdgeGlowBottom;
    private EdgeGlow mEdgeGlowLeft;
    private EdgeGlow mEdgeGlowLeft;
    private EdgeGlow mEdgeGlowRight;
    private EdgeGlow mEdgeGlowRight;
    /*
     * These manage the delta the user has pulled beyond the edges.
     */
    private int mOverscrollDeltaX;
    private int mOverscrollDeltaY;


    // Used to match key downs and key ups
    // Used to match key downs and key ups
    private boolean mGotKeyDown;
    private boolean mGotKeyDown;
@@ -2569,17 +2574,59 @@ public class WebView extends AbsoluteLayout
            boolean clampedY) {
            boolean clampedY) {
        mInOverScrollMode = false;
        mInOverScrollMode = false;
        int maxX = computeMaxScrollX();
        int maxX = computeMaxScrollX();
        int maxY = computeMaxScrollY();
        if (maxX == 0) {
        if (maxX == 0) {
            // do not over scroll x if the page just fits the screen
            // do not over scroll x if the page just fits the screen
            scrollX = pinLocX(scrollX);
            scrollX = pinLocX(scrollX);
        } else if (scrollX < 0 || scrollX > maxX) {
        } else if (scrollX < 0 || scrollX > maxX) {
            mInOverScrollMode = true;
            mInOverScrollMode = true;
        }
        }
        if (scrollY < 0 || scrollY > computeMaxScrollY()) {
        if (scrollY < 0 || scrollY > maxY) {
            mInOverScrollMode = true;
            mInOverScrollMode = true;
        }
        }


        int oldX = mScrollX;
        int oldY = mScrollY;

        super.scrollTo(scrollX, scrollY);
        super.scrollTo(scrollX, scrollY);

        // Only show overscroll bars if there was no movement in any direction
        // as a result of scrolling.
        if (mEdgeGlowTop != null && oldY == mScrollY && oldX == mScrollX) {
            // Don't show left/right glows if we fit the whole content.
            // Also don't show if there was vertical movement.
            if (maxX > 0) {
                final int pulledToX = oldX + mOverscrollDeltaX;
                if (pulledToX < 0) {
                    mEdgeGlowLeft.onPull((float) mOverscrollDeltaX / getWidth());
                    if (!mEdgeGlowRight.isFinished()) {
                        mEdgeGlowRight.onRelease();
                    }
                } else if (pulledToX > maxX) {
                    mEdgeGlowRight.onPull((float) mOverscrollDeltaX / getWidth());
                    if (!mEdgeGlowLeft.isFinished()) {
                        mEdgeGlowLeft.onRelease();
                    }
                }
                mOverscrollDeltaX = 0;
            }

            if (maxY > 0 || getOverScrollMode() == OVER_SCROLL_ALWAYS) {
                final int pulledToY = oldY + mOverscrollDeltaY;
                if (pulledToY < 0) {
                    mEdgeGlowTop.onPull((float) mOverscrollDeltaY / getHeight());
                    if (!mEdgeGlowBottom.isFinished()) {
                        mEdgeGlowBottom.onRelease();
                    }
                } else if (pulledToY > maxY) {
                    mEdgeGlowBottom.onPull((float) mOverscrollDeltaY / getHeight());
                    if (!mEdgeGlowTop.isFinished()) {
                        mEdgeGlowTop.onRelease();
                    }
                }
                mOverscrollDeltaY = 0;
            }
        }
    }
    }


    /**
    /**
@@ -5562,42 +5609,16 @@ public class WebView extends AbsoluteLayout
            final int oldY = mScrollY;
            final int oldY = mScrollY;
            final int rangeX = computeMaxScrollX();
            final int rangeX = computeMaxScrollX();
            final int rangeY = computeMaxScrollY();
            final int rangeY = computeMaxScrollY();
            overScrollBy(deltaX, deltaY, oldX, oldY,
                    rangeX, rangeY,
                    mOverscrollDistance, mOverscrollDistance, true);


            if (mEdgeGlowTop != null) {
            if (mEdgeGlowTop != null) {
                // Don't show left/right glows if we fit the whole content.
                // Save the deltas for overscroll glow.
                if (rangeX > 0) {
                mOverscrollDeltaX = deltaX;
                    final int pulledToX = oldX + deltaX;
                mOverscrollDeltaY = deltaY;
                    if (pulledToX < 0) {
                        mEdgeGlowLeft.onPull((float) deltaX / getWidth());
                        if (!mEdgeGlowRight.isFinished()) {
                            mEdgeGlowRight.onRelease();
                        }
                    } else if (pulledToX > rangeX) {
                        mEdgeGlowRight.onPull((float) deltaX / getWidth());
                        if (!mEdgeGlowLeft.isFinished()) {
                            mEdgeGlowLeft.onRelease();
                        }
                    }
            }
            }


                if (rangeY > 0 || getOverScrollMode() == OVER_SCROLL_ALWAYS) {
            overScrollBy(deltaX, deltaY, oldX, oldY,
                    final int pulledToY = oldY + deltaY;
                    rangeX, rangeY,
                    if (pulledToY < 0) {
                    mOverscrollDistance, mOverscrollDistance, true);
                        mEdgeGlowTop.onPull((float) deltaY / getHeight());
                        if (!mEdgeGlowBottom.isFinished()) {
                            mEdgeGlowBottom.onRelease();
                        }
                    } else if (pulledToY > rangeY) {
                        mEdgeGlowBottom.onPull((float) deltaY / getHeight());
                        if (!mEdgeGlowTop.isFinished()) {
                            mEdgeGlowTop.onRelease();
                        }
                    }
                }
            }
        }
        }
        if (!getSettings().getBuiltInZoomControls()) {
        if (!getSettings().getBuiltInZoomControls()) {
            boolean showPlusMinus = mMinZoomScale < mMaxZoomScale;
            boolean showPlusMinus = mMinZoomScale < mMaxZoomScale;