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

Commit 07056eaa authored by Matt Casey's avatar Matt Casey Committed by Android (Google) Code Review
Browse files

Merge "Move ScrollView scroll capture to the center" into sc-dev

parents 960f5666 9e25d3b8
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