From 82f61b990a9da30a6f10ffa88a158897b1794bd6 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 3 Feb 2017 11:19:45 -0800 Subject: [PATCH] Pass parent with down with calculateLayout to allow percentages on root node Reviewed By: astreet Differential Revision: D4501016 fbshipit-source-id: 0c9502e86ff200c021c78afb7ac4b48cf11b3bdb --- .../java/com/facebook/react/uimanager/ReactShadowNode.java | 2 +- ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java | 6 +++--- .../src/main/java/com/facebook/yoga/YogaNodeAPI.java | 2 +- ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java index 74052a1d22e..cfe84b969cf 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java @@ -345,7 +345,7 @@ public class ReactShadowNode { } public void calculateLayout() { - mYogaNode.calculateLayout(); + mYogaNode.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED); } public final boolean hasNewLayout() { diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java index 504e385249b..9ac262191b6 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNode.java @@ -172,10 +172,10 @@ public class YogaNode implements YogaNodeAPI { return mChildren == null ? -1 : mChildren.indexOf(child); } - private native void jni_YGNodeCalculateLayout(long nativePointer); + private native void jni_YGNodeCalculateLayout(long nativePointer, float width, float height); @Override - public void calculateLayout() { - jni_YGNodeCalculateLayout(mNativePointer); + public void calculateLayout(float width, float height) { + jni_YGNodeCalculateLayout(mNativePointer, width, height); } private native boolean jni_YGNodeHasNewLayout(long nativePointer); diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeAPI.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeAPI.java index b4a43b70d68..2dcfa40973c 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeAPI.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeAPI.java @@ -20,7 +20,7 @@ public interface YogaNodeAPI { void setMeasureFunction(YogaMeasureFunction measureFunction); void setBaselineFunction(YogaBaselineFunction measureFunction); boolean isMeasureDefined(); - void calculateLayout(); + void calculateLayout(float width, float height); boolean isDirty(); boolean hasNewLayout(); void dirty(); diff --git a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp index dd540bb44e4..88044a9657b 100644 --- a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp @@ -202,11 +202,11 @@ void jni_YGNodeRemoveChild(alias_ref, jlong nativePointer, jlong childP YGNodeRemoveChild(_jlong2YGNodeRef(nativePointer), _jlong2YGNodeRef(childPointer)); } -void jni_YGNodeCalculateLayout(alias_ref, jlong nativePointer) { +void jni_YGNodeCalculateLayout(alias_ref, jlong nativePointer, jfloat width, jfloat height) { const YGNodeRef root = _jlong2YGNodeRef(nativePointer); YGNodeCalculateLayout(root, - YGUndefined, - YGUndefined, + static_cast(width), + static_cast(height), YGNodeStyleGetDirection(_jlong2YGNodeRef(nativePointer))); YGTransferLayoutOutputsRecursive(root); }