Skip to content

Commit

Permalink
Workaround a wrong fling direction if FlatList or VirtualizedList is …
Browse files Browse the repository at this point in the history
…inverted.
  • Loading branch information
mandrigin committed Nov 13, 2018
1 parent a3752c6 commit f9ed777
Showing 1 changed file with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,18 @@ public void getClippingRect(Rect outClippingRect) {

@Override
public void fling(int velocityY) {
// Workaround.
// On Android P if a ScrollView is inverted, we will get a wrong sign for
// velocityY (see https://issuetracker.google.com/issues/112385925).
// At the same time, mOnScrollDispatchHelper tracks the correct velocity direction.
//
// Hence, we can use the absolute value from whatever the OS gives
// us and use the sign of what mOnScrollDispatchHelper has tracked.
final int correctedVelocityY = (int)(Math.abs(velocityY) * Math.signum(mOnScrollDispatchHelper.getYFlingVelocity()));


if (mPagingEnabled) {
smoothScrollAndSnap(velocityY);
smoothScrollAndSnap(correctedVelocityY);
} else if (mScroller != null) {
// FB SCROLLVIEW CHANGE

Expand All @@ -319,7 +329,7 @@ public void fling(int velocityY) {
getScrollX(), // startX
getScrollY(), // startY
0, // velocityX
velocityY, // velocityY
correctedVelocityY, // velocityY
0, // minX
0, // maxX
0, // minY
Expand All @@ -332,9 +342,9 @@ public void fling(int velocityY) {

// END FB SCROLLVIEW CHANGE
} else {
super.fling(velocityY);
super.fling(correctedVelocityY);
}
handlePostTouchScrolling(0, velocityY);
handlePostTouchScrolling(0, correctedVelocityY);
}

private void enableFpsListener() {
Expand Down

0 comments on commit f9ed777

Please sign in to comment.