diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java index e92f9267c..95a5319e5 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNode.java @@ -190,6 +190,12 @@ public class CSSNode implements CSSNodeAPI { jni_CSSNodeMarkLayoutSeen(mNativePointer); } + private native void jni_CSSNodeCopyStyle(long dstNativePointer, long srcNativePointer); + @Override + public void copyStyle(CSSNode srcNode) { + jni_CSSNodeCopyStyle(mNativePointer, srcNode.mNativePointer); + } + private native int jni_CSSNodeStyleGetDirection(long nativePointer); @Override public CSSDirection getStyleDirection() { diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java index dd18a54b9..d35d8b48e 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeAPI.java @@ -37,6 +37,7 @@ public interface CSSNodeAPI { void dirty(); void markLayoutSeen(); boolean valuesEqual(float f1, float f2); + void copyStyle(CSSNodeType srcNode); CSSDirection getStyleDirection(); void setDirection(CSSDirection direction); CSSFlexDirection getFlexDirection(); diff --git a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java index dc31cc041..0031ee697 100644 --- a/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java +++ b/ReactAndroid/src/main/java/com/facebook/csslayout/CSSNodeDEPRECATED.java @@ -222,6 +222,11 @@ public class CSSNodeDEPRECATED implements CSSNodeAPI { return FloatUtil.floatsEqual(f1, f2); } + @Override + public void copyStyle(CSSNodeDEPRECATED srcNode) { + throw new UnsupportedOperationException("copyStyle is not implemented"); + } + /** * Get this node's direction, as defined in the style. */ diff --git a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp index f3bad8067..9c3e39590 100644 --- a/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/csslayoutjni/jni/CSSJNI.cpp @@ -187,6 +187,10 @@ void jni_CSSNodeMarkLayoutSeen(alias_ref, jlong nativePointer) { CSSNodeSetHasNewLayout(_jlong2CSSNodeRef(nativePointer), false); } +void jni_CSSNodeCopyStyle(alias_ref, jlong dstNativePointer, jlong srcNativePointer) { + CSSNodeCopyStyle(_jlong2CSSNodeRef(dstNativePointer), _jlong2CSSNodeRef(srcNativePointer)); +} + #define CSS_NODE_JNI_STYLE_PROP(javatype, type, name) \ javatype jni_CSSNodeStyleGet##name(alias_ref, jlong nativePointer) { \ return (javatype) CSSNodeStyleGet##name(_jlong2CSSNodeRef(nativePointer)); \ @@ -257,6 +261,7 @@ jint JNI_OnLoad(JavaVM *vm, void *) { CSSMakeNativeMethod(jni_CSSNodeIsDirty), CSSMakeNativeMethod(jni_CSSNodeMarkLayoutSeen), CSSMakeNativeMethod(jni_CSSNodeSetHasMeasureFunc), + CSSMakeNativeMethod(jni_CSSNodeCopyStyle), CSSMakeNativeMethod(jni_CSSNodeStyleGetDirection), CSSMakeNativeMethod(jni_CSSNodeStyleSetDirection),