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

@@ -11,20 +11,28 @@ package com.facebook.react.flat;
/* package */ class NodeRegion {
/* package */ static final NodeRegion[] EMPTY_ARRAY = new NodeRegion[0];
/* package */ static final NodeRegion EMPTY = new NodeRegion(0, 0, 0, 0, -1);
/* package */ static final NodeRegion EMPTY = new NodeRegion(0, 0, 0, 0, -1, false);
/* package */ final float mLeft;
/* package */ final float mTop;
/* package */ final float mRight;
/* package */ final float mBottom;
/* package */ final int mTag;
/* package */ final boolean mIsVirtual;
/* package */ NodeRegion(float left, float top, float right, float bottom, int tag) {
/* package */ NodeRegion(
float left,
float top,
float right,
float bottom,
int tag,
boolean isVirtual) {
mLeft = left;
mTop = top;
mRight = right;
mBottom = bottom;
mTag = tag;
mIsVirtual = isVirtual;
}
/* package */ final boolean withinBounds(float touchX, float touchY) {