From 47e9f33eb4c5d4b4831452afeb05b368830fe65f Mon Sep 17 00:00:00 2001 From: Joe Vilches Date: Mon, 8 Jan 2024 20:28:49 -0800 Subject: [PATCH] Java bindings for setAlwaysFormsContainingBlock (#1540) Summary: X-link: https://github.com/facebook/react-native/pull/42192 Pull Request resolved: https://github.com/facebook/yoga/pull/1540 tsia Changelog: [Internal] Reviewed By: NickGerleman Differential Revision: D52608259 fbshipit-source-id: 647ec4e2fe180ace8d6b641e17cd610fa53fe845 --- java/com/facebook/yoga/YogaNative.java | 1 + java/com/facebook/yoga/YogaNode.java | 2 ++ java/com/facebook/yoga/YogaNodeJNIBase.java | 5 +++++ java/jni/YGJNIVanilla.cpp | 12 ++++++++++++ 4 files changed, 20 insertions(+) diff --git a/java/com/facebook/yoga/YogaNative.java b/java/com/facebook/yoga/YogaNative.java index a0b7c165..101f0e0e 100644 --- a/java/com/facebook/yoga/YogaNative.java +++ b/java/com/facebook/yoga/YogaNative.java @@ -114,4 +114,5 @@ public class YogaNative { static native void jni_YGNodePrintJNI(long nativePointer); static native void jni_YGNodeSetStyleInputsJNI(long nativePointer, float[] styleInputsArray, int size); static native long jni_YGNodeCloneJNI(long nativePointer); + static native void jni_YGNodeSetAlwaysFormsContainingBlockJNI(long nativePointer, boolean alwaysFormContainingBlock); } diff --git a/java/com/facebook/yoga/YogaNode.java b/java/com/facebook/yoga/YogaNode.java index 1f19ec5b..25323437 100644 --- a/java/com/facebook/yoga/YogaNode.java +++ b/java/com/facebook/yoga/YogaNode.java @@ -226,4 +226,6 @@ public abstract class YogaNode implements YogaProps { public abstract YogaNode cloneWithoutChildren(); public abstract YogaNode cloneWithChildren(); + + public abstract void setAlwaysFormsContainingBlock(boolean alwaysFormsContainingBlock); } diff --git a/java/com/facebook/yoga/YogaNodeJNIBase.java b/java/com/facebook/yoga/YogaNodeJNIBase.java index dbe3fd8a..d1010f40 100644 --- a/java/com/facebook/yoga/YogaNodeJNIBase.java +++ b/java/com/facebook/yoga/YogaNodeJNIBase.java @@ -504,6 +504,11 @@ public abstract class YogaNodeJNIBase extends YogaNode implements Cloneable { YogaNative.jni_YGNodeSetHasMeasureFuncJNI(mNativePointer, measureFunction != null); } + @Override + public void setAlwaysFormsContainingBlock(boolean alwaysFormsContainingBlock) { + YogaNative.jni_YGNodeSetAlwaysFormsContainingBlockJNI(mNativePointer, alwaysFormsContainingBlock); + } + // Implementation Note: Why this method needs to stay final // // We cache the jmethodid for this method in Yoga code. This means that even if a subclass diff --git a/java/jni/YGJNIVanilla.cpp b/java/jni/YGJNIVanilla.cpp index b3b56486..ccbf7787 100644 --- a/java/jni/YGJNIVanilla.cpp +++ b/java/jni/YGJNIVanilla.cpp @@ -681,6 +681,15 @@ static void jni_YGNodeSetHasBaselineFuncJNI( hasBaselineFunc ? YGJNIBaselineFunc : nullptr); } +static void jni_YGNodeSetAlwaysFormsContainingBlockJNI( + JNIEnv* /*env*/, + jobject /*obj*/, + jlong nativePointer, + jboolean alwaysFormsContainingBlock) { + YGNodeSetAlwaysFormsContainingBlock( + _jlong2YGNodeRef(nativePointer), alwaysFormsContainingBlock); +} + static void jni_YGNodePrintJNI(JNIEnv* /*env*/, jobject /*obj*/, jlong nativePointer) { #ifdef DEBUG @@ -958,6 +967,9 @@ static JNINativeMethod methods[] = { {"jni_YGNodeSetHasBaselineFuncJNI", "(JZ)V", (void*)jni_YGNodeSetHasBaselineFuncJNI}, + {"jni_YGNodeSetAlwaysFormsContainingBlockJNI", + "(JZ)V", + (void*)jni_YGNodeSetAlwaysFormsContainingBlockJNI}, {"jni_YGNodePrintJNI", "(J)V", (void*)jni_YGNodePrintJNI}, {"jni_YGNodeCloneJNI", "(J)J", (void*)jni_YGNodeCloneJNI}, };