Remove 'box-only' as a layoutOnlyProp
Summary: Currently, having the property `pointerEvents={'box-only'}` marks a view as layoutOnly. For optimization reasons, layoutOnly nodes are [not added to the node hierarchy](b103903ec8/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java (L99)
) The problem is that should this box ever need to be [transitioned to not-layout-only](b103903ec8/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java (L394)
) (for example, because you add the a CSS transform property), it must be added to the hierarchy. To add it to the hierarchy the [React Styles Diff Map](b103903ec8/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java (L396)
) is passed along with the backing shadowNode to create the node. The problem is that at no point were the original `pointerEvents` and so the new node will be created with `pointerEvents = 'auto'`. A more correct fix to this problem might be to have shadowNodes carry around their pointerEvents, although this is likely a greater design decision which is why am I proposing the quick fix now. Will also resolve: https://github.com/react-native-community/react-native-modal/issues/11 Closes https://github.com/facebook/react-native/pull/15529 Reviewed By: AaaChiuuu Differential Revision: D5792012 Pulled By: tomasreimers fbshipit-source-id: 625242c53e16cb293c64811a57f6c3905b3483e0
This commit is contained in:
parent
3ceb20de74
commit
718f4e60c2
|
@ -169,7 +169,7 @@ public class ViewProps {
|
|||
return true;
|
||||
} else if (POINTER_EVENTS.equals(prop)) {
|
||||
String value = map.getString(prop);
|
||||
return "auto".equals(value) || "box-none".equals(value);
|
||||
return "auto".equals(value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue