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

Commit ade30615 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

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

Change-Id: I408633511dd52337984df3024bcc7b688f0ac58b
parents cb139682 07056eaa
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