mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-01 14:25:08 +08:00
Dont create a spacing object for returning margin, padding, border, and position
Differential Revision: D4050773 fbshipit-source-id: 3fd04c27f887a36875e455b5404a17154ac18f91
This commit is contained in:
committed by
Facebook Github Bot
parent
58b5e28e71
commit
6664b816d7
@@ -36,6 +36,7 @@ import com.facebook.csslayout.CSSMeasureMode;
|
||||
import com.facebook.csslayout.CSSNodeDEPRECATED;
|
||||
import com.facebook.csslayout.CSSNodeAPI;
|
||||
import com.facebook.csslayout.MeasureOutput;
|
||||
import com.facebook.csslayout.Spacing;
|
||||
import com.facebook.infer.annotation.Assertions;
|
||||
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
@@ -585,7 +586,10 @@ public class ReactTextShadowNode extends LayoutShadowNode {
|
||||
mPreparedSpannableText,
|
||||
UNSET,
|
||||
mContainsImages,
|
||||
getPadding(),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
getTextAlign()
|
||||
);
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate);
|
||||
|
||||
@@ -11,8 +11,6 @@ package com.facebook.react.views.text;
|
||||
|
||||
import android.text.Spannable;
|
||||
|
||||
import com.facebook.csslayout.Spacing;
|
||||
|
||||
/**
|
||||
* Class that contains the data needed for a text update.
|
||||
* Used by both <Text/> and <TextInput/>
|
||||
@@ -33,15 +31,18 @@ public class ReactTextUpdate {
|
||||
Spannable text,
|
||||
int jsEventCounter,
|
||||
boolean containsImages,
|
||||
Spacing padding,
|
||||
float paddingStart,
|
||||
float paddingTop,
|
||||
float paddingEnd,
|
||||
float paddingBottom,
|
||||
int textAlign) {
|
||||
mText = text;
|
||||
mJsEventCounter = jsEventCounter;
|
||||
mContainsImages = containsImages;
|
||||
mPaddingLeft = padding.get(Spacing.START);
|
||||
mPaddingTop = padding.get(Spacing.TOP);
|
||||
mPaddingRight = padding.get(Spacing.END);
|
||||
mPaddingBottom = padding.get(Spacing.BOTTOM);
|
||||
mPaddingLeft = paddingStart;
|
||||
mPaddingTop = paddingTop;
|
||||
mPaddingRight = paddingEnd;
|
||||
mPaddingBottom = paddingBottom;
|
||||
mTextAlign = textAlign;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
||||
setDefaultPadding(Spacing.TOP, mEditText.getPaddingTop());
|
||||
setDefaultPadding(Spacing.END, mEditText.getPaddingEnd());
|
||||
setDefaultPadding(Spacing.BOTTOM, mEditText.getPaddingBottom());
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,12 +85,17 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
mFontSize == UNSET ?
|
||||
(int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP)) : mFontSize);
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
editText.setPadding(
|
||||
(int) Math.floor(getPadding().get(Spacing.START)),
|
||||
(int) Math.floor(getPadding().get(Spacing.TOP)),
|
||||
(int) Math.floor(getPadding().get(Spacing.END)),
|
||||
(int) Math.floor(getPadding().get(Spacing.BOTTOM)));
|
||||
(int) Math.floor(getPadding(Spacing.START)),
|
||||
(int) Math.floor(getPadding(Spacing.TOP)),
|
||||
(int) Math.floor(getPadding(Spacing.END)),
|
||||
(int) Math.floor(getPadding(Spacing.BOTTOM)));
|
||||
|
||||
if (mNumberOfLines != UNSET) {
|
||||
editText.setLines(mNumberOfLines);
|
||||
@@ -115,7 +125,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
||||
if (mComputedPadding != null) {
|
||||
float[] updatedPadding = mComputedPadding;
|
||||
if (getLayoutDirection() == CSSDirection.RTL) {
|
||||
updatedPadding = spacingToFloatArrayForRTL(getPadding());
|
||||
updatedPadding = new float[] {
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), updatedPadding);
|
||||
mComputedPadding = null;
|
||||
@@ -128,7 +143,10 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
||||
preparedSpannableText,
|
||||
mJsEventCount,
|
||||
mContainsImages,
|
||||
getPadding(),
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
mTextAlign
|
||||
);
|
||||
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate);
|
||||
@@ -138,27 +156,12 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
||||
@Override
|
||||
public void setPadding(int spacingType, float padding) {
|
||||
super.setPadding(spacingType, padding);
|
||||
mComputedPadding = spacingToFloatArray(getPadding());
|
||||
mComputedPadding = new float[] {
|
||||
getPadding(Spacing.START),
|
||||
getPadding(Spacing.TOP),
|
||||
getPadding(Spacing.END),
|
||||
getPadding(Spacing.BOTTOM),
|
||||
};
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
private float[] spacingToFloatArray(Spacing spacing) {
|
||||
return new float[] {
|
||||
spacing.get(Spacing.START),
|
||||
spacing.get(Spacing.TOP),
|
||||
spacing.get(Spacing.END),
|
||||
spacing.get(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
|
||||
// Since TextInput communicate with native component but not CSSLayout,
|
||||
// So flip the padding for RTL is necessary when the padding is updated
|
||||
private float[] spacingToFloatArrayForRTL(Spacing spacing) {
|
||||
return new float[] {
|
||||
spacing.get(Spacing.END),
|
||||
spacing.get(Spacing.TOP),
|
||||
spacing.get(Spacing.START),
|
||||
spacing.get(Spacing.BOTTOM),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user