mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Disable childrenDrawingOrder of ReactViewGroup in Fabric
Summary: Fabric should be inserting Views into the hierarchy in the correct order based on z-index already, so there should be no reason to enable this mechanism. At best it's a perf pessimisation and at worst it could be causing consistency issues or crashing (TBD). Most likely this is a noop. Changelog: [Internal] Reviewed By: ejanzer Differential Revision: D24512203 fbshipit-source-id: b9336240ef8506742bcbd8d08fc8b830f82cdfe2
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a68754f9b2
commit
46eb3ec474
@@ -71,4 +71,7 @@ public class ReactFeatureFlags {
|
||||
|
||||
/** Enable caching of Spannable objects using equality of ReadableNativeMaps */
|
||||
public static boolean enableSpannableCacheByReadableNativeMapEquality = true;
|
||||
|
||||
/** Disable customDrawOrder in ReactViewGroup under Fabric only. */
|
||||
public static boolean disableCustomDrawOrderFabric = false;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,8 @@ import com.facebook.react.uimanager.RootView;
|
||||
import com.facebook.react.uimanager.RootViewUtil;
|
||||
import com.facebook.react.uimanager.ViewGroupDrawingOrderHelper;
|
||||
import com.facebook.react.uimanager.ViewProps;
|
||||
import com.facebook.react.uimanager.common.UIManagerType;
|
||||
import com.facebook.react.uimanager.common.ViewUtil;
|
||||
import com.facebook.yoga.YogaConstants;
|
||||
|
||||
/**
|
||||
@@ -433,12 +435,28 @@ public class ReactViewGroup extends ViewGroup
|
||||
}
|
||||
}
|
||||
|
||||
private boolean customDrawOrderDisabled() {
|
||||
if (getId() == NO_ID) {
|
||||
return false;
|
||||
}
|
||||
if (ViewUtil.getUIManagerType(getId()) != UIManagerType.FABRIC) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ReactFeatureFlags.disableCustomDrawOrderFabric;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addView(View child, int index, ViewGroup.LayoutParams params) {
|
||||
// This will get called for every overload of addView so there is not need to override every
|
||||
// method.
|
||||
mDrawingOrderHelper.handleAddView(child);
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
|
||||
if (!customDrawOrderDisabled()) {
|
||||
mDrawingOrderHelper.handleAddView(child);
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
} else {
|
||||
setChildrenDrawingOrderEnabled(false);
|
||||
}
|
||||
|
||||
super.addView(child, index, params);
|
||||
}
|
||||
@@ -447,8 +465,12 @@ public class ReactViewGroup extends ViewGroup
|
||||
public void removeView(View view) {
|
||||
UiThreadUtil.assertOnUiThread();
|
||||
|
||||
mDrawingOrderHelper.handleRemoveView(view);
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
if (!customDrawOrderDisabled()) {
|
||||
mDrawingOrderHelper.handleRemoveView(view);
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
} else {
|
||||
setChildrenDrawingOrderEnabled(false);
|
||||
}
|
||||
|
||||
super.removeView(view);
|
||||
}
|
||||
@@ -457,8 +479,12 @@ public class ReactViewGroup extends ViewGroup
|
||||
public void removeViewAt(int index) {
|
||||
UiThreadUtil.assertOnUiThread();
|
||||
|
||||
mDrawingOrderHelper.handleRemoveView(getChildAt(index));
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
if (!customDrawOrderDisabled()) {
|
||||
mDrawingOrderHelper.handleRemoveView(getChildAt(index));
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
} else {
|
||||
setChildrenDrawingOrderEnabled(false);
|
||||
}
|
||||
|
||||
super.removeViewAt(index);
|
||||
}
|
||||
@@ -479,6 +505,10 @@ public class ReactViewGroup extends ViewGroup
|
||||
|
||||
@Override
|
||||
public void updateDrawingOrder() {
|
||||
if (customDrawOrderDisabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
mDrawingOrderHelper.update();
|
||||
setChildrenDrawingOrderEnabled(mDrawingOrderHelper.shouldEnableCustomDrawingOrder());
|
||||
invalidate();
|
||||
|
||||
Reference in New Issue
Block a user