From 7d1f7f3f5fbc9e659757f17fae98fa8778ffdbb6 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Mon, 12 Jun 2023 10:08:52 -0700 Subject: [PATCH] Fix Android border clip check (#37828) Summary: Instead of requiring all types of border color values to be present we should only take into consideration the left, top, right, bottom, and allEdges values and inject block values into colorBottom and colorTop. This PR only addresses the first issue described here (https://github.com/facebook/react-native/issues/37753#issuecomment-1587196793) by kelset ## Changelog: [ANDROID] [FIXED] - Fix border clip check Pull Request resolved: https://github.com/facebook/react-native/pull/37828 Test Plan: Test through rn-tester if border color is being applied image Reviewed By: lunaleaps Differential Revision: D46643773 Pulled By: cipolleschi fbshipit-source-id: efb1ea81bf2462c14767a2554880eb7c44989975 --- .../views/view/ReactViewBackgroundDrawable.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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 c2a1b9d29de..31a4523569c 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 @@ -564,19 +564,28 @@ public class ReactViewBackgroundDrawable extends Drawable { int colorRight = getBorderColor(Spacing.RIGHT); int colorBottom = getBorderColor(Spacing.BOTTOM); int borderColor = getBorderColor(Spacing.ALL); + int colorBlock = getBorderColor(Spacing.BLOCK); int colorBlockStart = getBorderColor(Spacing.BLOCK_START); int colorBlockEnd = getBorderColor(Spacing.BLOCK_END); + if (isBorderColorDefined(Spacing.BLOCK)) { + colorBottom = colorBlock; + colorTop = colorBlock; + } + if (isBorderColorDefined(Spacing.BLOCK_END)) { + colorBottom = colorBlockEnd; + } + if (isBorderColorDefined(Spacing.BLOCK_START)) { + colorTop = colorBlockStart; + } + // Clip border ONLY if its color is non transparent if (Color.alpha(colorLeft) != 0 && Color.alpha(colorTop) != 0 && Color.alpha(colorRight) != 0 && Color.alpha(colorBottom) != 0 - && Color.alpha(borderColor) != 0 - && Color.alpha(colorBlock) != 0 - && Color.alpha(colorBlockStart) != 0 - && Color.alpha(colorBlockEnd) != 0) { + && Color.alpha(borderColor) != 0) { mInnerClipTempRectForBorderRadius.top += borderWidth.top; mInnerClipTempRectForBorderRadius.bottom -= borderWidth.bottom;