From fbf14cb0eafc07ec2f34052ca899c1ca36667b7e Mon Sep 17 00:00:00 2001 From: Ivan Alexandrov Date: Fri, 6 Oct 2023 11:35:28 +0300 Subject: [PATCH 1/3] Fix android platform border color --- .../react/uimanager/ViewManagersPropertyCache.java | 11 ++++++++++- .../react/views/scroll/ReactHorizontalScrollView.java | 4 ++-- .../scroll/ReactHorizontalScrollViewManager.java | 7 ++----- .../facebook/react/views/scroll/ReactScrollView.java | 4 ++-- .../react/views/scroll/ReactScrollViewManager.java | 6 ++---- .../react/views/text/ReactTextAnchorViewManager.java | 7 ++----- .../com/facebook/react/views/text/ReactTextView.java | 4 ++-- .../facebook/react/views/textinput/ReactEditText.java | 4 ++-- .../react/views/textinput/ReactTextInputManager.java | 7 ++----- .../react/views/view/ReactMapBufferPropSetter.kt | 2 +- .../react/views/view/ReactViewBackgroundDrawable.java | 4 +++- .../react/views/view/ReactViewBackgroundManager.java | 4 ++-- .../com/facebook/react/views/view/ReactViewGroup.java | 4 ++-- .../facebook/react/views/view/ReactViewManager.java | 7 ++----- 14 files changed, 36 insertions(+), 39 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java index c187cac7bea303..da22fbcea42010 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java @@ -204,6 +204,11 @@ public ColorPropSetter(ReactProp prop, Method setter, int defaultValue) { mDefaultValue = defaultValue; } + public ColorPropSetter(ReactPropGroup prop, Method setter, int index, int defaultValue) { + super(prop, "mixed", setter, index); + mDefaultValue = defaultValue; + } + @Override protected Object getValueOrDefault(Object value, Context context) { if (value == null) { @@ -468,7 +473,11 @@ private static void createPropSetters( } } else if (propTypeClass == int.class) { for (int i = 0; i < names.length; i++) { - props.put(names[i], new IntPropSetter(annotation, method, i, annotation.defaultInt())); + if ("Color".equals(annotation.customType())) { + props.put(names[i], new ColorPropSetter(annotation, method, i, annotation.defaultInt())); + } else { + props.put(names[i], new IntPropSetter(annotation, method, i, annotation.defaultInt())); + } } } else if (propTypeClass == float.class) { for (int i = 0; i < names.length; i++) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index 7dbcb788c3ac32..c4e47df7b2f11d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -1276,8 +1276,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, float color, float alpha) { - mReactBackgroundManager.setBorderColor(position, color, alpha); + public void setBorderColor(int position, int color) { + mReactBackgroundManager.setBorderColor(position, color); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index d311a236ed96f7..ca56c6f4697d5e 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -291,11 +291,8 @@ public void setBorderWidth(ReactHorizontalScrollView view, int index, float widt "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactHorizontalScrollView view, int index, Integer color) { - float rgbComponent = - color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); - view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); + public void setBorderColor(ReactHorizontalScrollView view, int index, int color) { + view.setBorderColor(SPACING_TYPES[index], color); } @ReactProp(name = "overflow") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index f66ed102018ab9..3303b23b45b9d3 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -1155,8 +1155,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, float color, float alpha) { - mReactBackgroundManager.setBorderColor(position, color, alpha); + public void setBorderColor(int position, int color) { + mReactBackgroundManager.setBorderColor(position, color); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index 1b42aaefefcf92..bf9662ced7f152 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -272,10 +272,8 @@ public void setBorderWidth(ReactScrollView view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactScrollView view, int index, Integer color) { - float rgbComponent = color == null ? YogaConstants.UNDEFINED : (float) (color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) (color >>> 24); - view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); + public void setBorderColor(ReactScrollView view, int index, int color) { + view.setBorderColor(SPACING_TYPES[index], color); } @ReactProp(name = "overflow") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java index 867aac0d2f530b..5c08e2c03acc9f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java @@ -180,11 +180,8 @@ public void setBorderWidth(ReactTextView view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactTextView view, int index, Integer color) { - float rgbComponent = - color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); - view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); + public void setBorderColor(ReactTextView view, int index, int color) { + view.setBorderColor(SPACING_TYPES[index], color); } @ReactProp(name = ViewProps.INCLUDE_FONT_PADDING, defaultBoolean = true) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index 83bacaafb9ea60..5280cdffc24220 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -629,8 +629,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, float color, float alpha) { - mReactBackgroundManager.setBorderColor(position, color, alpha); + public void setBorderColor(int position, int color) { + mReactBackgroundManager.setBorderColor(position, color); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java index ecc6165f7244bf..799c66e8505830 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java @@ -1066,8 +1066,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, float color, float alpha) { - mReactBackgroundManager.setBorderColor(position, color, alpha); + public void setBorderColor(int position, int color) { + mReactBackgroundManager.setBorderColor(position, color); } public int getBorderColor(int position) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 8496a7d059e4c8..fd60f1985d4102 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -978,11 +978,8 @@ public void setBorderWidth(ReactEditText view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactEditText view, int index, Integer color) { - float rgbComponent = - color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); - view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); + public void setBorderColor(ReactEditText view, int index, int color) { + view.setBorderColor(SPACING_TYPES[index], color); } @Override diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt index 7447e45313a52c..668ee98a9ef004 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt @@ -364,7 +364,7 @@ object ReactMapBufferPropSetter { else -> throw IllegalArgumentException("Unknown key for border color: $key") } val colorValue = entry.intValue - setBorderColor(view, index, colorValue.takeIf { it != -1 }) + setBorderColor(view, index, colorValue.takeIf { it != -1 } ?: 0) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index 110bf7527da06d..774061167f5085 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -224,7 +224,9 @@ public void setBorderWidth(int position, float width) { } } - public void setBorderColor(int position, float rgb, float alpha) { + public void setBorderColor(int position, int color) { + float rgb = (float) ((int) color & 0x00FFFFFF); + float alpha = (float) ((int) color >>> 24); this.setBorderRGB(position, rgb); this.setBorderAlpha(position, alpha); mNeedUpdatePathForBorderRadius = true; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java index 9b479fa42214be..269be035b16786 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java @@ -65,8 +65,8 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, float color, float alpha) { - getOrCreateReactViewBackground().setBorderColor(position, color, alpha); + public void setBorderColor(int position, int color) { + getOrCreateReactViewBackground().setBorderColor(position, color); } public int getBorderColor(int position) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index d21362d48fb729..eb3e62a2d860fb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -310,8 +310,8 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, float rgb, float alpha) { - getOrCreateReactViewBackground().setBorderColor(position, rgb, alpha); + public void setBorderColor(int position, int color) { + getOrCreateReactViewBackground().setBorderColor(position, color); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java index dde735192aafa6..784e1203a3d15e 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java @@ -252,11 +252,8 @@ public void setBorderWidth(ReactViewGroup view, int index, float width) { ViewProps.BORDER_BLOCK_START_COLOR }, customType = "Color") - public void setBorderColor(ReactViewGroup view, int index, Integer color) { - float rgbComponent = - color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); - view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); + public void setBorderColor(ReactViewGroup view, int index, int color) { + view.setBorderColor(SPACING_TYPES[index], color); } @ReactProp(name = ViewProps.COLLAPSABLE) From c8db1889ac19555449429f32d712a50081748cdd Mon Sep 17 00:00:00 2001 From: Ivan Alexandrov Date: Fri, 6 Oct 2023 12:48:50 +0300 Subject: [PATCH 2/3] Revert types changing --- .../react/uimanager/ViewManagersPropertyCache.java | 10 +++++++++- .../react/views/scroll/ReactHorizontalScrollView.java | 2 +- .../scroll/ReactHorizontalScrollViewManager.java | 2 +- .../facebook/react/views/scroll/ReactScrollView.java | 2 +- .../react/views/scroll/ReactScrollViewManager.java | 2 +- .../react/views/text/ReactTextAnchorViewManager.java | 2 +- .../com/facebook/react/views/text/ReactTextView.java | 2 +- .../facebook/react/views/textinput/ReactEditText.java | 2 +- .../react/views/textinput/ReactTextInputManager.java | 2 +- .../react/views/view/ReactMapBufferPropSetter.kt | 2 +- .../react/views/view/ReactViewBackgroundDrawable.java | 11 ++++++----- .../react/views/view/ReactViewBackgroundManager.java | 2 +- .../com/facebook/react/views/view/ReactViewGroup.java | 2 +- .../facebook/react/views/view/ReactViewManager.java | 2 +- 14 files changed, 27 insertions(+), 18 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java index da22fbcea42010..09ae7a272ad0e6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java @@ -336,6 +336,10 @@ public BoxedColorPropSetter(ReactProp prop, Method setter) { super(prop, "mixed", setter); } + public BoxedColorPropSetter(ReactPropGroup prop, Method setter, int index) { + super(prop, "mixed", setter, index); + } + @Override protected @Nullable Object getValueOrDefault(Object value, Context context) { if (value != null) { @@ -490,7 +494,11 @@ private static void createPropSetters( } } else if (propTypeClass == Integer.class) { for (int i = 0; i < names.length; i++) { - props.put(names[i], new BoxedIntPropSetter(annotation, method, i)); + if ("Color".equals(annotation.customType())) { + props.put(names[i], new BoxedColorPropSetter(annotation, method, i)); + } else { + props.put(names[i], new BoxedIntPropSetter(annotation, method, i)); + } } } else { throw new RuntimeException( diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index c4e47df7b2f11d..c78d5ec924b120 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -1276,7 +1276,7 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { mReactBackgroundManager.setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index ca56c6f4697d5e..3d86d297dafe52 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -291,7 +291,7 @@ public void setBorderWidth(ReactHorizontalScrollView view, int index, float widt "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactHorizontalScrollView view, int index, int color) { + public void setBorderColor(ReactHorizontalScrollView view, int index, Integer color) { view.setBorderColor(SPACING_TYPES[index], color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index 3303b23b45b9d3..0b63d498aeea47 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -1155,7 +1155,7 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { mReactBackgroundManager.setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index bf9662ced7f152..b8b4e33773beab 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -272,7 +272,7 @@ public void setBorderWidth(ReactScrollView view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactScrollView view, int index, int color) { + public void setBorderColor(ReactScrollView view, int index, Integer color) { view.setBorderColor(SPACING_TYPES[index], color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java index 5c08e2c03acc9f..aa9377f55eca13 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java @@ -180,7 +180,7 @@ public void setBorderWidth(ReactTextView view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactTextView view, int index, int color) { + public void setBorderColor(ReactTextView view, int index, Integer color) { view.setBorderColor(SPACING_TYPES[index], color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index 5280cdffc24220..95935df8ed61ab 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -629,7 +629,7 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { mReactBackgroundManager.setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java index 799c66e8505830..46addd698c2f14 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java @@ -1066,7 +1066,7 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { mReactBackgroundManager.setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index fd60f1985d4102..63d282421c2b67 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -978,7 +978,7 @@ public void setBorderWidth(ReactEditText view, int index, float width) { "borderBottomColor" }, customType = "Color") - public void setBorderColor(ReactEditText view, int index, int color) { + public void setBorderColor(ReactEditText view, int index, Integer color) { view.setBorderColor(SPACING_TYPES[index], color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt index 668ee98a9ef004..7447e45313a52c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactMapBufferPropSetter.kt @@ -364,7 +364,7 @@ object ReactMapBufferPropSetter { else -> throw IllegalArgumentException("Unknown key for border color: $key") } val colorValue = entry.intValue - setBorderColor(view, index, colorValue.takeIf { it != -1 } ?: 0) + setBorderColor(view, index, colorValue.takeIf { it != -1 }) } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index 774061167f5085..9ea084ce8ef788 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -224,11 +224,12 @@ public void setBorderWidth(int position, float width) { } } - public void setBorderColor(int position, int color) { - float rgb = (float) ((int) color & 0x00FFFFFF); - float alpha = (float) ((int) color >>> 24); - this.setBorderRGB(position, rgb); - this.setBorderAlpha(position, alpha); + public void setBorderColor(int position, Integer color) { + float rgbComponent = + color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); + this.setBorderRGB(position, rgbComponent); + this.setBorderAlpha(position, alphaComponent); mNeedUpdatePathForBorderRadius = true; } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java index 269be035b16786..87cae083ee11ce 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java @@ -65,7 +65,7 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { getOrCreateReactViewBackground().setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index eb3e62a2d860fb..21bf61fc94f8de 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -310,7 +310,7 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, int color) { + public void setBorderColor(int position, Integer color) { getOrCreateReactViewBackground().setBorderColor(position, color); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java index 784e1203a3d15e..83182bda803f8d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java @@ -252,7 +252,7 @@ public void setBorderWidth(ReactViewGroup view, int index, float width) { ViewProps.BORDER_BLOCK_START_COLOR }, customType = "Color") - public void setBorderColor(ReactViewGroup view, int index, int color) { + public void setBorderColor(ReactViewGroup view, int index, Integer color) { view.setBorderColor(SPACING_TYPES[index], color); } From 97743ce79a5e597e2e90828a021c2234d28a8d51 Mon Sep 17 00:00:00 2001 From: Ivan Alexandrov Date: Fri, 6 Oct 2023 12:55:05 +0300 Subject: [PATCH 3/3] Revert color casting --- .../react/views/scroll/ReactHorizontalScrollView.java | 4 ++-- .../views/scroll/ReactHorizontalScrollViewManager.java | 5 ++++- .../com/facebook/react/views/scroll/ReactScrollView.java | 4 ++-- .../react/views/scroll/ReactScrollViewManager.java | 4 +++- .../react/views/text/ReactTextAnchorViewManager.java | 5 ++++- .../com/facebook/react/views/text/ReactTextView.java | 4 ++-- .../facebook/react/views/textinput/ReactEditText.java | 4 ++-- .../react/views/textinput/ReactTextInputManager.java | 5 ++++- .../react/views/view/ReactViewBackgroundDrawable.java | 9 +++------ .../react/views/view/ReactViewBackgroundManager.java | 4 ++-- .../com/facebook/react/views/view/ReactViewGroup.java | 4 ++-- .../com/facebook/react/views/view/ReactViewManager.java | 5 ++++- 12 files changed, 34 insertions(+), 23 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index c78d5ec924b120..7dbcb788c3ac32 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -1276,8 +1276,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - mReactBackgroundManager.setBorderColor(position, color); + public void setBorderColor(int position, float color, float alpha) { + mReactBackgroundManager.setBorderColor(position, color, alpha); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 3d86d297dafe52..d311a236ed96f7 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -292,7 +292,10 @@ public void setBorderWidth(ReactHorizontalScrollView view, int index, float widt }, customType = "Color") public void setBorderColor(ReactHorizontalScrollView view, int index, Integer color) { - view.setBorderColor(SPACING_TYPES[index], color); + float rgbComponent = + color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); + view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } @ReactProp(name = "overflow") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index 0b63d498aeea47..f66ed102018ab9 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -1155,8 +1155,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - mReactBackgroundManager.setBorderColor(position, color); + public void setBorderColor(int position, float color, float alpha) { + mReactBackgroundManager.setBorderColor(position, color, alpha); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index b8b4e33773beab..1b42aaefefcf92 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -273,7 +273,9 @@ public void setBorderWidth(ReactScrollView view, int index, float width) { }, customType = "Color") public void setBorderColor(ReactScrollView view, int index, Integer color) { - view.setBorderColor(SPACING_TYPES[index], color); + float rgbComponent = color == null ? YogaConstants.UNDEFINED : (float) (color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) (color >>> 24); + view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } @ReactProp(name = "overflow") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java index aa9377f55eca13..867aac0d2f530b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextAnchorViewManager.java @@ -181,7 +181,10 @@ public void setBorderWidth(ReactTextView view, int index, float width) { }, customType = "Color") public void setBorderColor(ReactTextView view, int index, Integer color) { - view.setBorderColor(SPACING_TYPES[index], color); + float rgbComponent = + color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); + view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } @ReactProp(name = ViewProps.INCLUDE_FONT_PADDING, defaultBoolean = true) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index 95935df8ed61ab..83bacaafb9ea60 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -629,8 +629,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - mReactBackgroundManager.setBorderColor(position, color); + public void setBorderColor(int position, float color, float alpha) { + mReactBackgroundManager.setBorderColor(position, color, alpha); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java index 46addd698c2f14..ecc6165f7244bf 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java @@ -1066,8 +1066,8 @@ public void setBorderWidth(int position, float width) { mReactBackgroundManager.setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - mReactBackgroundManager.setBorderColor(position, color); + public void setBorderColor(int position, float color, float alpha) { + mReactBackgroundManager.setBorderColor(position, color, alpha); } public int getBorderColor(int position) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java index 63d282421c2b67..8496a7d059e4c8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java @@ -979,7 +979,10 @@ public void setBorderWidth(ReactEditText view, int index, float width) { }, customType = "Color") public void setBorderColor(ReactEditText view, int index, Integer color) { - view.setBorderColor(SPACING_TYPES[index], color); + float rgbComponent = + color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); + view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } @Override diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index 9ea084ce8ef788..110bf7527da06d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -224,12 +224,9 @@ public void setBorderWidth(int position, float width) { } } - public void setBorderColor(int position, Integer color) { - float rgbComponent = - color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); - float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); - this.setBorderRGB(position, rgbComponent); - this.setBorderAlpha(position, alphaComponent); + public void setBorderColor(int position, float rgb, float alpha) { + this.setBorderRGB(position, rgb); + this.setBorderAlpha(position, alpha); mNeedUpdatePathForBorderRadius = true; } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java index 87cae083ee11ce..9b479fa42214be 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java @@ -65,8 +65,8 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - getOrCreateReactViewBackground().setBorderColor(position, color); + public void setBorderColor(int position, float color, float alpha) { + getOrCreateReactViewBackground().setBorderColor(position, color, alpha); } public int getBorderColor(int position) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index 21bf61fc94f8de..d21362d48fb729 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -310,8 +310,8 @@ public void setBorderWidth(int position, float width) { getOrCreateReactViewBackground().setBorderWidth(position, width); } - public void setBorderColor(int position, Integer color) { - getOrCreateReactViewBackground().setBorderColor(position, color); + public void setBorderColor(int position, float rgb, float alpha) { + getOrCreateReactViewBackground().setBorderColor(position, rgb, alpha); } public void setBorderRadius(float borderRadius) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java index 83182bda803f8d..dde735192aafa6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java @@ -253,7 +253,10 @@ public void setBorderWidth(ReactViewGroup view, int index, float width) { }, customType = "Color") public void setBorderColor(ReactViewGroup view, int index, Integer color) { - view.setBorderColor(SPACING_TYPES[index], color); + float rgbComponent = + color == null ? YogaConstants.UNDEFINED : (float) ((int) color & 0x00FFFFFF); + float alphaComponent = color == null ? YogaConstants.UNDEFINED : (float) ((int) color >>> 24); + view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } @ReactProp(name = ViewProps.COLLAPSABLE)