From 8c9f190038eec838817c7338ac9073f2e1042985 Mon Sep 17 00:00:00 2001 From: Dave Miller Date: Wed, 6 Jul 2016 11:04:39 -0700 Subject: [PATCH] Fix Spacing lifecycle issue introduced by D3516692 Summary: D3516692 incorrectly assumed that the Spacing object was immutable. This is not true as it can change in a measure pass on the shadow thread while the UI is displaying some other data. This fixes it to just pull the values we need and pass them instead of the object. Reviewed By: foghina Differential Revision: D3523004 fbshipit-source-id: 056baecf60a9c2f2494d173a3c60396a93b97d42 --- .../react/views/text/ReactTextUpdate.java | 26 ++++++++++++++++--- .../react/views/text/ReactTextView.java | 10 +++---- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.java index 61a6b3b6f0d..dca68669d1d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.java @@ -23,7 +23,10 @@ public class ReactTextUpdate { private final Spannable mText; private final int mJsEventCounter; private final boolean mContainsImages; - private final Spacing mPadding; + private final float mPaddingLeft; + private final float mPaddingTop; + private final float mPaddingRight; + private final float mPaddingBottom; public ReactTextUpdate( Spannable text, @@ -33,7 +36,10 @@ public class ReactTextUpdate { mText = text; mJsEventCounter = jsEventCounter; mContainsImages = containsImages; - mPadding = padding; + mPaddingLeft = padding.get(Spacing.LEFT); + mPaddingTop = padding.get(Spacing.TOP); + mPaddingRight = padding.get(Spacing.RIGHT); + mPaddingBottom = padding.get(Spacing.BOTTOM); } public Spannable getText() { @@ -48,7 +54,19 @@ public class ReactTextUpdate { return mContainsImages; } - public Spacing getPadding() { - return mPadding; + public float getPaddingLeft() { + return mPaddingLeft; + } + + public float getPaddingTop() { + return mPaddingTop; + } + + public float getPaddingRight() { + return mPaddingRight; + } + + public float getPaddingBottom() { + return mPaddingBottom; } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index da7ea7e8280..71bb5ccf10d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -17,7 +17,6 @@ import android.view.Gravity; import android.view.ViewGroup; import android.widget.TextView; -import com.facebook.csslayout.Spacing; import com.facebook.react.uimanager.ReactCompoundView; public class ReactTextView extends TextView implements ReactCompoundView { @@ -46,12 +45,11 @@ public class ReactTextView extends TextView implements ReactCompoundView { setLayoutParams(EMPTY_LAYOUT_PARAMS); } setText(update.getText()); - Spacing padding = update.getPadding(); setPadding( - (int) Math.ceil(padding.get(Spacing.LEFT)), - (int) Math.ceil(padding.get(Spacing.TOP)), - (int) Math.ceil(padding.get(Spacing.RIGHT)), - (int) Math.ceil(padding.get(Spacing.BOTTOM))); + (int) Math.ceil(update.getPaddingLeft()), + (int) Math.ceil(update.getPaddingTop()), + (int) Math.ceil(update.getPaddingRight()), + (int) Math.ceil(update.getPaddingBottom())); } @Override