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

Commit 911b72b2 authored by Matt Casey's avatar Matt Casey Committed by Automerger Merge Worker
Browse files

Merge "Move ScrollView scroll capture to the center" into sc-dev am: 07056eaa am: ade30615

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14752211

Change-Id: I0bed0491bffe56e03dde758ccab950a5223805e8
parents 8e6cfbec ade30615
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -125,10 +125,19 @@ public class ScrollViewCaptureHelper implements ScrollCaptureViewHelper<ViewGrou
                view.getScrollX() - contentView.getLeft(),
                view.getScrollY() - contentView.getTop());

        Rect input = new Rect(requestedContentBounds);

        // Expand input rect to get the requested rect to be in the center
        int remainingHeight = view.getHeight() - view.getPaddingTop()
                - view.getPaddingBottom() - input.height();
        if (remainingHeight > 0) {
            input.inset(0, -remainingHeight / 2);
        }

        // requestRect is now local to contentView as requestedContentBounds
        // contentView (and each parent in turn if possible) will be scrolled
        // (if necessary) to make all of requestedContent visible, (if possible!)
        contentView.requestRectangleOnScreen(new Rect(requestedContentBounds), true);
        contentView.requestRectangleOnScreen(input, true);

        // update new offset between starting and current scroll position
        scrollDelta = view.getScrollY() - mStartScrollY;
+8 −4
Original line number Diff line number Diff line
@@ -164,7 +164,8 @@ public class ScrollViewCaptureHelperTest {
        assertRectEquals(request, scrollResult.requestedArea);
        assertRectEquals(request, scrollResult.availableArea);
        assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
        assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta);
        assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
                scrollResult.scrollDelta);
    }

    @Test
@@ -182,7 +183,8 @@ public class ScrollViewCaptureHelperTest {
        assertRectEquals(request, scrollResult.requestedArea);
        assertRectEquals(request, scrollResult.availableArea);
        assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
        assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta);
        assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
                scrollResult.scrollDelta);
    }

    @Test
@@ -201,7 +203,8 @@ public class ScrollViewCaptureHelperTest {
        assertRectEquals(request, scrollResult.requestedArea);
        assertRectEquals(request, scrollResult.availableArea);
        assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
        assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta);
        assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
                scrollResult.scrollDelta);

    }

@@ -220,7 +223,8 @@ public class ScrollViewCaptureHelperTest {
        assertRectEquals(request, scrollResult.requestedArea);
        assertRectEquals(request, scrollResult.availableArea);
        assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent));
        assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta);
        assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2,
                scrollResult.scrollDelta);
    }

    @Test