Skip to content

Commit 78bdf58

Browse files
Nick Lefevermeta-codesync[bot]
authored andcommitted
Enable scroll state restore for Trait::hidden (#54113)
Summary: Pull Request resolved: #54113 With `Trait::hidden` unmounting and remounting views for shadow nodes holding scroll state, we have to restore the scroll position from the shadow node state when the scroll view is being remounted Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D84291899 fbshipit-source-id: 596839f56757dbdf9485e82380af31a71865e1df
1 parent 8d245e9 commit 78bdf58

4 files changed

Lines changed: 12 additions & 4 deletions

File tree

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1657,7 +1657,8 @@ public void setStateWrapper(StateWrapper stateWrapper) {
16571657
@Override
16581658
public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
16591659
mReactScrollViewScrollState = scrollState;
1660-
if (ReactNativeFeatureFlags.enableViewCulling()) {
1660+
if (ReactNativeFeatureFlags.enableViewCulling()
1661+
|| ReactNativeFeatureFlags.useTraitHiddenOnAndroid()) {
16611662
Point scrollPosition = scrollState.getLastStateUpdateScroll();
16621663
scrollTo(scrollPosition.x, scrollPosition.y);
16631664
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ constructor(private val fpsListener: FpsListener? = null) :
8585
stateWrapper: StateWrapper,
8686
): Any? {
8787
view.setStateWrapper(stateWrapper)
88-
if (ReactNativeFeatureFlags.enableViewCulling()) {
88+
if (
89+
ReactNativeFeatureFlags.enableViewCulling() ||
90+
ReactNativeFeatureFlags.useTraitHiddenOnAndroid()
91+
) {
8992
ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
9093
}
9194
return null

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1481,7 +1481,8 @@ private void updateScrollAwayState(int scrollAwayPaddingTop) {
14811481
@Override
14821482
public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
14831483
mReactScrollViewScrollState = scrollState;
1484-
if (ReactNativeFeatureFlags.enableViewCulling()) {
1484+
if (ReactNativeFeatureFlags.enableViewCulling()
1485+
|| ReactNativeFeatureFlags.useTraitHiddenOnAndroid()) {
14851486
setScrollAwayTopPaddingEnabledUnstable(scrollState.getScrollAwayPaddingTop(), false);
14861487

14871488
Point scrollPosition = scrollState.getLastStateUpdateScroll();

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,10 @@ constructor(private val fpsListener: FpsListener? = null) :
384384
stateWrapper: StateWrapper,
385385
): Any? {
386386
view.setStateWrapper(stateWrapper)
387-
if (ReactNativeFeatureFlags.enableViewCulling()) {
387+
if (
388+
ReactNativeFeatureFlags.enableViewCulling() ||
389+
ReactNativeFeatureFlags.useTraitHiddenOnAndroid()
390+
) {
388391
ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
389392
}
390393
return null

0 commit comments

Comments
 (0)