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

Commit ddcb05df authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Allow watch rotary to trigger stretch on scrolling containers."

parents 80b9a04f 33e79a15
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -4363,8 +4363,35 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te

                final int delta = Math.round(axisValue * mVerticalScrollFactor);
                if (delta != 0) {
                    // If we're moving down, we want the top item. If we're moving up, bottom item.
                    final int motionIndex = delta > 0 ? 0 : getChildCount() - 1;

                    int motionViewPrevTop = 0;
                    View motionView = this.getChildAt(motionIndex);
                    if (motionView != null) {
                        motionViewPrevTop = motionView.getTop();
                    }

                    final int overscrollMode = getOverScrollMode();

                    if (!trackMotionScroll(delta, delta)) {
                        return true;
                    } else if (!event.isFromSource(InputDevice.SOURCE_MOUSE) && motionView != null
                            && (overscrollMode == OVER_SCROLL_ALWAYS
                            || (overscrollMode == OVER_SCROLL_IF_CONTENT_SCROLLS
                            && !contentFits()))) {
                        int motionViewRealTop = motionView.getTop();
                        float overscroll = (delta - (motionViewRealTop - motionViewPrevTop))
                                / ((float) getHeight());
                        if (delta > 0) {
                            mEdgeGlowTop.onPullDistance(overscroll, 0.5f);
                            mEdgeGlowTop.onRelease();
                        } else {
                            mEdgeGlowBottom.onPullDistance(-overscroll, 0.5f);
                            mEdgeGlowBottom.onRelease();
                        }
                        invalidate();
                        return true;
                    }
                }
                break;
+24 −0
Original line number Diff line number Diff line
@@ -872,15 +872,39 @@ public class HorizontalScrollView extends FrameLayout {
                        final int range = getScrollRange();
                        int oldScrollX = mScrollX;
                        int newScrollX = oldScrollX + delta;

                        final int overscrollMode = getOverScrollMode();
                        boolean canOverscroll = !event.isFromSource(InputDevice.SOURCE_MOUSE)
                                && (overscrollMode == OVER_SCROLL_ALWAYS
                                || (overscrollMode == OVER_SCROLL_IF_CONTENT_SCROLLS && range > 0));
                        boolean absorbed = false;

                        if (newScrollX < 0) {
                            if (canOverscroll) {
                                mEdgeGlowLeft.onPullDistance(-(float) newScrollX / getWidth(),
                                        0.5f);
                                mEdgeGlowLeft.onRelease();
                                invalidate();
                                absorbed = true;
                            }
                            newScrollX = 0;
                        } else if (newScrollX > range) {
                            if (canOverscroll) {
                                mEdgeGlowRight.onPullDistance(
                                        (float) (newScrollX - range) / getWidth(), 0.5f);
                                mEdgeGlowRight.onRelease();
                                invalidate();
                                absorbed = true;
                            }
                            newScrollX = range;
                        }
                        if (newScrollX != oldScrollX) {
                            super.scrollTo(newScrollX, mScrollY);
                            return true;
                        }
                        if (absorbed) {
                            return true;
                        }
                    }
                }
            }
+23 −0
Original line number Diff line number Diff line
@@ -939,15 +939,38 @@ public class ScrollView extends FrameLayout {
                    final int range = getScrollRange();
                    int oldScrollY = mScrollY;
                    int newScrollY = oldScrollY - delta;

                    final int overscrollMode = getOverScrollMode();
                    boolean canOverscroll = !event.isFromSource(InputDevice.SOURCE_MOUSE)
                            && (overscrollMode == OVER_SCROLL_ALWAYS
                            || (overscrollMode == OVER_SCROLL_IF_CONTENT_SCROLLS && range > 0));
                    boolean absorbed = false;

                    if (newScrollY < 0) {
                        if (canOverscroll) {
                            mEdgeGlowTop.onPullDistance(-(float) newScrollY / getHeight(), 0.5f);
                            mEdgeGlowTop.onRelease();
                            invalidate();
                            absorbed = true;
                        }
                        newScrollY = 0;
                    } else if (newScrollY > range) {
                        if (canOverscroll) {
                            mEdgeGlowBottom.onPullDistance(
                                    (float) (newScrollY - range) / getHeight(), 0.5f);
                            mEdgeGlowBottom.onRelease();
                            invalidate();
                            absorbed = true;
                        }
                        newScrollY = range;
                    }
                    if (newScrollY != oldScrollY) {
                        super.scrollTo(mScrollX, newScrollY);
                        return true;
                    }
                    if (absorbed) {
                        return true;
                    }
                }
                break;
        }