Don't clip overflowing Nodes

Summary:
As of D3235050, Nodes supports the optimization of removing clipped
subviews from the hierarchy. However, because Nodes supports overflow:visible,
this could cause issues when DrawCommands overflow the bounds of their parent
container. This patch fixes this by not clipping any overflowing Nodes.

Reviewed By: astreet

Differential Revision: D3235072
This commit is contained in:
Ahmed El-Helw
2016-12-19 13:40:26 -08:00
parent 5f162ca119
commit 9d67989001
5 changed files with 83 additions and 8 deletions
@@ -44,16 +44,19 @@ import com.facebook.react.uimanager.UIViewOperationQueue;
private final @Nullable DrawCommand[] mDrawCommands;
private final @Nullable AttachDetachListener[] mAttachDetachListeners;
private final @Nullable NodeRegion[] mNodeRegions;
private final boolean mHasOverflowingElements;
private UpdateMountState(
int reactTag,
@Nullable DrawCommand[] drawCommands,
@Nullable AttachDetachListener[] listeners,
@Nullable NodeRegion[] nodeRegions) {
@Nullable NodeRegion[] nodeRegions,
boolean hasOverflowingElements) {
mReactTag = reactTag;
mDrawCommands = drawCommands;
mAttachDetachListeners = listeners;
mNodeRegions = nodeRegions;
mHasOverflowingElements = hasOverflowingElements;
}
@Override
@@ -62,7 +65,8 @@ import com.facebook.react.uimanager.UIViewOperationQueue;
mReactTag,
mDrawCommands,
mAttachDetachListeners,
mNodeRegions);
mNodeRegions,
mHasOverflowingElements);
}
}
@@ -234,8 +238,14 @@ import com.facebook.react.uimanager.UIViewOperationQueue;
int reactTag,
@Nullable DrawCommand[] drawCommands,
@Nullable AttachDetachListener[] listeners,
@Nullable NodeRegion[] nodeRegions) {
enqueueUIOperation(new UpdateMountState(reactTag, drawCommands, listeners, nodeRegions));
@Nullable NodeRegion[] nodeRegions,
boolean hasOverflowingElements) {
enqueueUIOperation(new UpdateMountState(
reactTag,
drawCommands,
listeners,
nodeRegions,
hasOverflowingElements));
}
public void enqueueUpdateViewGroup(int reactTag, int[] viewsToAdd, int[] viewsToDetach) {