Include non-virtual nodes when collecting NodeRegions

Summary: Before this patch, we only collected virtual nodes in NodeRegions, because NodeRegions are only needed to implement ReactCompoundView.reactTargetForTouch() which is only interested in virtual nodes. In the next patch, FlatViewGroup will implement ReactCompoundViewGroup interface which requires knowledge of both virtual and non-virtual children. As a step towards that, we need to include non-virtual nodes in NodeRegions. This patch is implementing that. By itself, it should have not cause any changes in application behavior: we add non-virtual nodes to NodeRegions and mark them as non-virtual, then skip all non-virtual nodes in reactTagForTouch().

Reviewed By: ahmedre

Differential Revision: D3018047
This commit is contained in:
Denis Koroskin
2016-03-07 20:06:31 -08:00
committed by Ahmed El-Helw
parent 8014147013
commit b52928c484
6 changed files with 56 additions and 21 deletions

View File

@@ -251,10 +251,15 @@ import com.facebook.react.uimanager.annotations.ReactProp;
mNodeRegions = nodeRegion;
}
/* package */ void updateNodeRegion(float left, float top, float right, float bottom) {
if (mNodeRegion.mLeft != left || mNodeRegion.mTop != top ||
mNodeRegion.mRight != right || mNodeRegion.mBottom != bottom) {
setNodeRegion(new NodeRegion(left, top, right, bottom, getReactTag()));
/* package */ void updateNodeRegion(
float left,
float top,
float right,
float bottom,
boolean isVirtual) {
if (mNodeRegion.mLeft != left || mNodeRegion.mTop != top || mNodeRegion.mRight != right ||
mNodeRegion.mBottom != bottom || mNodeRegion.mIsVirtual != isVirtual) {
setNodeRegion(new NodeRegion(left, top, right, bottom, getReactTag(), isVirtual));
}
}